home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / DOCS / SBASEP4D.LHA / SuperBaseProDatabaseLang2.doc < prev    next >
Text File  |  1994-11-27  |  101KB  |  3,956 lines

  1.  
  2.  
  3.             SUPERBASE PROFESSIONAL
  4.              DATABASE MANAGEMENT LANGUAGE
  5.                  USER GUIDE
  6.  
  7.                    Part II
  8.  
  9. WHERE conditions allows you to add a filter to the command.conditions is
  10. set up in the same way as the command string in the Filter dialog. USING
  11. parameters can be used to change the default parameters specified by
  12. SET-OPTIONS. For a description of USING and the parameters it takes, see
  13. EXPORT.
  14.  
  15. EXAMPLES
  16.  
  17. 1    IMPORT "aaa.exp"
  18. 2    IMPORT "aaa.exp" TO FILE "aaa" WHERE (datefield) > DAYS ("29 Apr 87")
  19.  
  20. INDEX
  21. PURPOSE
  22. Selects the index to be used with the current file.
  23.  
  24. SYNTAX
  25. INDEX index
  26.  
  27. COMMENTS
  28.  
  29. Superbase automatically selects the first index as default when you open a
  30. file or when you make an open file the current file. With the INDEX
  31. command, you can select another of the file's indexes. index is the name of
  32. a field in the current file. An index for this field must already exist.
  33. Because DML parses entire lines before executing them, you cannot place an
  34. Index statement-or any other statement that refers to a field-on the same
  35. line as the OPEN FILE statement. When the DML interpreter reaches the INDEX
  36. statement, the file will not yet be open, and the field name, therefore,
  37. will not be recognized. As a result, a line like
  38.  
  39.     OPEN FILE "aaa": INDEX anum
  40.  
  41. will produce an error message such as "Can't do this" or "Can't find this
  42. field".
  43.  
  44. EXAMPLES
  45.  
  46. 1    OPEN FILE "aaa"
  47.     INDEX anum
  48.  
  49.                 5-70
  50.  
  51. 2    OPEN FILE "aaa": OPEN FILE "bbb"
  52.     .....
  53.     .....
  54.     FILE "aaa": INDEX anum
  55.     .....
  56.     FILE "bbb": INDEX datea
  57.  
  58. INPUT
  59. PURPOSE
  60.  
  61. Reads characters or a line from a text file on disk into a variable or a
  62. field.
  63.  
  64. SYNTAX
  65. INPUT[&nexp[, ]/LINE]var/field
  66.  
  67. COMMENTS
  68.  
  69. This statement inputs data from a text file on disk or from another
  70. computer using the COMMS link. It assumes that an input channel has been
  71. opened for example, by OPEN FOR INPUT. With the LINE option, INPUT reads
  72. data from the input channel until it finds a line feed character (ASCII 10)
  73. and inputs the data into var or field. If the line feed character has been
  74. used as the record separator, INPUT LINE reads a record at a time. var can
  75. be a string or numeric variable and field can be a text, numeric or date
  76. field. However, in each case the type of variable or field used should
  77. match the type of data expected. Thus if you attempt to input alphabetic
  78. characters into a numeric variable they will be valued at zero, while
  79. inputting them into a date field will produce an invalid date error. &nexp
  80. specifies the number of characters that the command takes from the text
  81. file. The comma after nexp is entirely optional. When nexp is zero or when
  82. & nexp is not used, the command reads characters from the text file until
  83. it finds a comma (ASCII 44) or a line feed character  (ASCII 10). This
  84. option allows INPUT to be used instead of IMPORT to read in data from an
  85. exported file. To detect the end of a text file, use EOF ("*").
  86.  
  87.                 5-71
  88.  
  89. EXAMPLES
  90.  
  91. 1    INPUT LINE a$
  92. 2    INPUT &6a$ (or INPUT &6, a$)
  93. 3    INPUT a%
  94. 4    FILE "aaa": EXPORT TO "aaa.exp"
  95.     OPEN "aaa.exp" FOR INPUT
  96.     FOR i%=1 TO RECCOUNT ("aaa")
  97.     BLANK
  98.     INPUT field1
  99.     INPUT field2
  100.     ........
  101.     INPUT lastfield
  102.     STORE
  103.     NEXT i%: CLOSE INPUT
  104.  
  105. Example 4 demonstrates how INPUT can be used as an alternative to IMPORT.
  106.  
  107. INSTR
  108. PURPOSE
  109.  
  110. Returns the starting character position of a substring within a string, or
  111. returns 0 if the substring is not contained within the string.
  112.  
  113. SYNTAX
  114. INSTR[nexpr, ]strexpr, substrexpr)
  115.  
  116. COMMENTS
  117.  
  118. This function returns the position in strexpr of the first occurrence of
  119. substrexpr. If nexpr is used, INSTR searches for the first occurrence of
  120. substrexpr from position nexpr onwards. If the substring is not found, the
  121. value returned is zero. nexpr must be positive and less than the length of
  122. strexpr. INSTR is case sensitive, i.e., "abc" and "ABC" are different.
  123.  
  124.                 5-72
  125.  
  126. EXAMPLES
  127.  
  128. 1    x%=INSTR (x$, y$)
  129. 2    x%=INSTR (textfield, "Mr")
  130. 3    x%=INSTR (x$, "Mr"): y%=INSTR (x% + 1, x$, "Mr")
  131. 4    ? LEFT$ (textfield, INSTR (textfield, " ") -1)
  132. 5    x$=LCASE$ (textfield): x%=INSTR (x$, "abc")
  133.     IF x% > 0 THEN ? LEFT$ (textfield, x% -1)
  134.  
  135. NOTES
  136.  
  137. The second example simply locates the title 'Mr.'. Example 3 locates any
  138. 'Mr and Mrs' or 'Mr & Mrs'. Example 4 displays the first word in textfield.
  139. Example 5 finds any occurrence of the sequence "abc" in textfield
  140. regardless of what case the letters are in.
  141.  
  142.                 5-73
  143.  
  144. INT
  145. PURPOSE
  146.  
  147. Removes the part of a number to the right of the decimal point, turning it
  148. into a whole number.
  149.  
  150. SYNTAX
  151. INT (nexpr)
  152.  
  153. COMMENTS
  154.  
  155. INT does not round a decimal number up or down to the nearest whole number,
  156. but simply strips off the decimal part. Thus INT (123.00001) and INT
  157. (123.999999) give the same result -123.0.
  158.  
  159. EXAMPLES
  160.  
  161. 1    numfieldc=INT (numfielda)
  162. 2    numfieldc=INT (numfielda * (1 + numfield) /100
  163. 3    $x=INT (VAL (RIGHT$ (textfield, 2)) /3.33
  164. 4    $x=INT ($y)
  165. 5    ? INT ($x ^ Sy)
  166.  
  167.                 5-74
  168.  
  169. KEY
  170. PURPOSE
  171.  
  172. Displays the current set of function key definitions, or defines a new set.
  173.  
  174. SYNTAX
  175. KEY keynum[, string]
  176.  
  177. COMMENTS
  178.  
  179. For the GEM versions of Superbase Professional running under MS DOS, the
  180. available function keys are F1 to F10. Each of these can be used with
  181. SHIFT,  CONTROL OR ALT, giving 40 function keys in all. The numbers
  182. associated with the keys are:
  183.  
  184.     F1-F10            1-10
  185.     SHIFT (F1-F10)        11-20
  186.     CONTROL (F1-F10)        21-30
  187.     ALT (F1-F10)        31-40
  188.  
  189. On the AMIGA and the Atari ST, 21 function keys are available: the keys F1
  190. to F10, which can be used with SHIFT, and the HELP key (HELP and Shift HELP
  191. are the same). Their numbers are:
  192.  
  193.     F1 to F10        1-10
  194.     SHIFT (F1-F10)        11-20
  195.     HELP            0
  196.  
  197. string can be any set of Superbase commands which can be entered on one
  198. line (provided that they do not access a field on the same line as an OPEN
  199. FILE). The command line in string is assigned to the key specified by
  200. keynum Using KEY without a following command string clears the key
  201. associated with keynum. If keynum and string and not used, KEY displays the
  202. current set of function key definitions.
  203.  
  204. EXAMPLES
  205.  
  206. 1    KEY 1
  207. 2    KEY 1, "OPEN FILE ~aaa~: BLANK: ENTER: STORE: ? ~ Now 
  208.     ~; RECCOUNT (~aaa~); ~Records~"
  209.  
  210.                 5-75
  211.  
  212. 3    KEY
  213. 4    KEY 3, "Tel. (0428) 725400 [(04203) 5601 evenings]"
  214.  
  215. Example 1 clears key F1. Example 2 sets F3 to enter a record into a file
  216. and report how many records there now are. Note the use of the tilde
  217. character to insert quotation marks. Since the entire string must be
  218. enclosed in quotation marks, you cannot use quotation marks within the
  219. string.
  220.  
  221.                 5-76
  222.  
  223. LABELS
  224. PURPOSE
  225. Prints records as labels.
  226.  
  227. SYNTAX
  228. LABELS [FILE sbfname] [WHERE conditions] [USING labelparams]
  229.  
  230. COMMENTS
  231.  
  232. This command is the program equivalent of selecting the Labels option from
  233. the PROCESS menu. It allows you print out records as labels and to define
  234. their format. WHERE conditions limits the records for which labels are
  235. printed and acts as a filter. USING allows you to specify the shape and
  236. content of the labels to be printed. labelparams is a series of parameters
  237. separated by commas, relating to the label definition dialog. Reading down
  238. the left column of the dialog and then down the right column, they are as
  239. follows:
  240.  
  241.     line 1 fields/line
  242.     line 2 fields/line
  243.     line 3 fields/line
  244.     line 4 fields/line
  245.     line 5 fields/line
  246.     line 6 fields/line
  247.     line 7 fields/line
  248.     line 8 fields/line
  249.     line 9 fields/line
  250.     line 10 fields/line
  251.     First label margin
  252.     label text width
  253.     Second label margin
  254.     First line next label
  255.     Copies per label
  256.     Labels per line
  257.  
  258. Note: All 16 parameters must be used.
  259.  
  260. If USING is not specified, LABELS takes the default parameters as shown in
  261. the label definition dialog (see Volume 1, Chapter 5).
  262.  
  263.                 5-77
  264.  
  265. EXAMPLES
  266.  
  267. 1    LABELS WHERE CITY="London"
  268.     USING 1, 0, 2, 1, 1, 1, 1, 1, 0, 0, 1, 35, 40, 12, 1, 2
  269. 2    LABELS "Address" WHERE Lastname LIKE "[a-c}*"
  270.  
  271. LCASE$
  272. PURPOSE
  273. Converts a text string to lowercase.
  274.  
  275. SYNTAX
  276. LCASE$ (strexpr)
  277.  
  278. COMMENTS
  279.  
  280. This function changes upper case letters to lower case; no other characters,
  281.  including those already in lowercase, are affected. The complementary
  282. function of LCASE$ is UCASE$.
  283.  
  284. EXAMPLES
  285.  
  286. 1    textfieldc=LCASE$ (textfielda)
  287. 2    x$=LCASE$ (y$)
  288. 3    x$=LCASE$ ("ABCDEF")
  289. 4    ? LCASE$ (x$)
  290.  
  291. LEFT$
  292. PURPOSE
  293.  
  294. Extracts one or more characters from a string, starting at the left of the
  295. string.
  296.  
  297. SYNTAX
  298. LEFT$ (strexpr, nexpr)
  299.  
  300.                 5-78
  301.  
  302. COMMENTS
  303.  
  304. LEFT$ returns the leftmost nexpr characters of the string strexpr. Thus, if
  305. strexpr is DICTIONARY and expr is 7:
  306.  
  307.     LEFT$ ("DIRECTIONARY", 7)
  308.  
  309. returns DICTION.
  310.  
  311. EXAMPLES
  312.  
  313. 1    textfieldc=LEFT$ (textfielda, 10)
  314. 2    textfieldc=UCASE$ (LEFT$ (textfielda, 1))
  315.     + MID$ (testfielda, 2)
  316. 3    LEFT$ (textfielda, 1) LIKE [a-c]
  317. 4    x$=LEFT$ ("ABCD", 2)
  318. 5    x$=LEFT$ (x$, n$)
  319. 6    ? LEFT$ (x$, 10)
  320. 7    strip: IF LEFT$ (x$, 1) =" " THEN x$=MID$ (x$, 2): GOTO strip
  321.  
  322. NOTES
  323.  
  324. Example 7 is a one line program to strip leading spaces from x$ (see
  325. LTRIM$).
  326.  
  327.                 5-79
  328.  
  329. LEN
  330. PURPOSE
  331. Returns the number of characters in a text string or text field.
  332.  
  333. SYNTAX
  334. LEN (strexpr)
  335.  
  336. COMMENTS
  337.  
  338. LEN counts the number of characters in a string, including spaces and non-
  339. printing characters.
  340.  
  341. EXAMPLES
  342.  
  343. 1    numfieldc=LEN (textfielda)
  344. 2    textfieldc=RIGHT$ (textfielda, LEN (testfieldb)
  345. 3    LEN (textfielda) > 25 AND LEN (textfielda) 50
  346. 4    x$=LEN ("A")
  347. 5    x$=LEN (x$)
  348. 6    x$=LEN (MID$ (extfield, 3))
  349. 7    ? LEN (x$)
  350.  
  351. LET
  352. PURPOSE
  353. Assign a value to a variable.
  354.  
  355. SYNTAX
  356. [LET] var/field=expr/[expr1 ? expra: exprb]
  357.  
  358. COMMENTS
  359.  
  360. The keyword LET is optional and is usually omitted. In other words, to
  361. assign a value to a variable or a field, you only need to use the equal
  362. sign.
  363.  
  364.                 5-80
  365.  
  366. The LET option has been included in DML to maintain compatibility with
  367. earlier versions of Basic. DML also provides a more unusual facility when
  368. you use the syntax:
  369.  
  370. var/field=expr1 ? expra: exprab
  371.  
  372. This option provides a short way of assigning different values to a
  373. variable or field, depending on whether an expression is true or not; that
  374. is, it makes assignment conditional on the truth or falsity of a specified
  375. expression. If expr1 is true, expra is assigned to the variable or field; if
  376. it is false, exprb is assigned. It is equivalent to
  377.  
  378.     IF expr1
  379.     THEN var/field=expra
  380.     ELSE var/field=exprab
  381.  
  382. Used in this way, the question mark character is referred to as a 'ternary
  383. operator' to reflect the fact that three operands are required at the right
  384. of the equal sign. In fact, you can chain ternary operators together to
  385. create a statement which contains multiple conditions and assigns one of
  386. multiple values. Within a program, however, you will generally find it
  387. easier to use the IF THEN ELSE statement. The main application for the
  388. ternary operator is in a Superbase file definition. Here it has an
  389. important advantage over the IF THEN ELSE statement: it can be entered as a
  390. calculation formula for a field in a file definition. For a fuller
  391. discussion of the ternary operator and its applications, see Chapter 2,
  392. Volume 1.
  393.  
  394. EXAMPLES
  395.  
  396. 1    item$="Sprocket"
  397. 2    Textfielda="London"
  398. 3    b%=3.25
  399. 4    numfieldb=INT (277/62)
  400.  
  401. The following examples assume that x$="ABC" and x%=4.5
  402. 5    y$= (x$="ABC") ? "yes": "no"
  403. This example assigns "yes" to y$.
  404.  
  405.                 5-81
  406.  
  407. 6    y$= (x$="aaa") ? x$: ""
  408. Assigns "" to y$.
  409. 7    y$= (x% > 3.5) ? "yes": "no"
  410. Assigns "yes" to y$
  411. 8    y$=EOF ("INPUT") ? "end of file": "more to read"
  412.  
  413. LIST
  414. PURPOSE
  415. Lists a text file to the screen.
  416.  
  417. SYNTAX
  418. LIST filename
  419.  
  420. COMMENTS
  421.  
  422. LIST is the program equivalent of the LIST option in the SYSTEM menu. It
  423. displays a text file on the screen. Do not confuse LIST with ? LIST, which
  424. displays a program listing. LIST only works with text files. Note also that
  425. unlike many other DML commands, LIST requires the file name itself plus its
  426. extension name.
  427.  
  428. EXAMPLES
  429.  
  430. 1    LIST "aaa.exp"
  431. 2    LIST "Address.sbd"
  432.  
  433.                 5-82
  434.  
  435. LOAD
  436. PURPOSE
  437. Loads any of the following types of file into memory: programs, text files,
  438. function key files, Query and Update files.
  439.  
  440. SYNTAX
  441. LOAD [TEXT]/[KEY]/[QUERY]/[UPDATE]filename[, APPEND]
  442.  
  443. COMMENTS
  444.  
  445. If none of the options TEXT, KEY, QUERY or UPDATE is used, Superbase
  446. assumes that filename refers to a '.sbp' file and attempts to load a
  447. PROGRAM file. The APPEND option can be used with program files and text
  448. files to append a file on disk to the file in memory. Note that LOAD cannot
  449. be used to load a Superbase data file (a file with an '.sbf' extension).
  450. For this you need to use the OPEN FILE command.
  451.  
  452. EXAMPLES
  453.  
  454. 1    LOAD "Program1"
  455. 2    LOAD TEXT "Banklet"
  456. 3    LOAD QUERY "Deptran"
  457. 4    LOAD KEY "Funkey1"
  458. 5    LOAD TEXT "Document2", APPEND
  459.  
  460.                 5-83
  461.  
  462. LOCATE
  463. PURPOSE
  464.  
  465. Sets the position at which the next output appears on the current output
  466. device (generally, the screen or the printer).
  467.  
  468. SYNTAX
  469. LOCATE column[, row]
  470.  
  471. COMMENTS
  472.  
  473. When you are displaying something on the screen, LOCATE allows you to
  474. specify where it appears. column and row must be numeric expressions.row is
  475. optional and if it is not included, LOCATE moves the cursor to the
  476. specified column position on the current line. You cannot use LOCATE to
  477. move the cursor backwards or up the screen: it will not move the cursor to
  478. a position on the same line which is to the left of the current
  479. position; and it will not move the cursor to a line above the current
  480. position. However, you can bypass this restriction if you place the HOME
  481. statement in front of LOCATE-see HOME.
  482.  
  483. EXAMPLES
  484.  
  485. 1    LOCATE 12, 5: ? "Hello"
  486. 2    c%=12: r%=1: LOCATE c%, r%
  487. 3    LOCATE 12: ? "Hello"
  488.  
  489. NOTES
  490.  
  491. The first example displays the word 'hello' at the 12th column on the sixth
  492. row. Example 3 displays 'hello' at the 12th column of whatever line the
  493. cursor happens to be on.
  494.  
  495.                 5-84
  496.  
  497. LOG
  498. PURPOSE
  499. Returns the natural logarithm (log to the base 'e') of a number.
  500.  
  501. SYNTAX
  502. LOG (nexpr)
  503.  
  504. COMMENTS
  505.  
  506. The value of nexpr must be positive. Negative numbers or zero produce the
  507. error message 'Invalid numeric parameter'.
  508.  
  509. EXAMPLES
  510.  
  511. 1    numfieldc=LOG (numfielda)
  512. 2    numfieldc=LOG (datefielda-datefieldb)
  513. 3    numfieldc > LOG (numfielda * numfieldb)
  514. 4    x%=LOG (y%)
  515. 5    x%=LOG (y% * numfielda * (datefielda-datefieldb))
  516.  
  517. LOOKUP
  518. PURPOSE
  519. Detects whether an expression occurs in a file in a specified field.
  520.  
  521. SYNTAX
  522. LOOKUP (expr, field.file)
  523.  
  524. COMMENTS
  525.  
  526. This function checks whether a given field in a file contains the
  527. expression in expr. That is, it answers the question: does expr exist in
  528. field.file? If it finds the expression, LOOKUP returns the value -1 (true);
  529. otherwise it returns the value 0 (false). expr and field.file must be of
  530. the same type (i.e. text or numeric). field.file must be the name of an
  531. indexed field in an open file.
  532.  
  533.                 5-85
  534.  
  535. LOOKUP plays a major role in cross-file validation and calculation. The
  536. file specified with LOOKUP can be any open file; so you can use this
  537. function to perform a relational lookup, where it checks whether the
  538. contents of a field in one file match the contents of a field in another
  539. file. If LOOKUP is successful-if it finds the expression you have
  540. specified-the record containing the expression becomes the current record,
  541. even though the file may not be the current file and is not displayed on
  542. screen. At the same time, the FOUND function is set to -1 to reflect the
  543. fact that the search has been successful. For a fuller explanation of
  544. LOOKUP, see Chapter 2, Volume 1.
  545.  
  546. EXAMPLES
  547.  
  548. 1    OPEN FILE "aaa": OPEN FILE "bbb"
  549.     SELECT FIRST
  550.     WHILE NOT EOF ("bbb")
  551.     IF LOOKUP (field1.bbb, field1.aaa) THEN GOSUB Process_module
  552.     WEND
  553.     ? "Process completed": END
  554.     Process_module:
  555.     ......
  556.     ......
  557.     RETURN
  558.  
  559. This example demonstrates a small program to process only those records in
  560. file 'bbb' that have a matching record in file 'aaa'. File 'bbb' could be
  561. an invoice file 'joined' to a customer file 'aaa' by a customer code
  562. (field1 in 'bbb' and 'aaa').
  563.  
  564.                 5-86
  565.  
  566. LTRIM$
  567. PURPOSE
  568. Trims leading spaces from a text expression or a text field.
  569.  
  570. SYNTAX
  571. LTRIM$ (strexpr)
  572.  
  573. COMMENTS
  574.  
  575. LTRIM$ returns a string consisting of the original string specified by
  576. strexpr with any leading spaces removed.
  577.  
  578. EXAMPLES
  579.  
  580. 1    textfieldc=LTRIM$ (textfielda)
  581. 2    x$=LTRIM$ (textfieldc.filea)
  582. 3    ? LEN (x$); LEN (LTRIM$ (x$))
  583.  
  584.                 5-87
  585.  
  586. MAKE
  587. PURPOSE
  588. Stores the file definition for a file it has been defined by CREATE and
  589. ADD.
  590.  
  591. SYNTAX
  592. MAKE sbfname
  593.  
  594. COMMENTS
  595.  
  596. This command is used as the last step in the process of creating a new
  597. file. After the file has been defined by CREATE and ADD, MAKE writes the
  598. new file definition to disk together with any indexes that have created.
  599. Note that a file definition is not regarded as valid until the MAKE command
  600. has been executed. Before then, any error will have the effect of removing
  601. the file definition.
  602.  
  603. EXAMPLES
  604.  
  605. 1    CREATE "Address"
  606.     ADD "Firstname; TXT REQ; 20; 1, 2"
  607.     ADD "Lastname; TXT REQ IXD; 20; 1, 33"
  608.     ADD "Street"; TXT; 25; 3, 2"
  609.     (other field definitions)
  610.     ........
  611.     ........
  612.     MAKE "Address"
  613.  
  614.                 5-88
  615.  
  616. MENU
  617. PURPOSE
  618. Sets up a user-define menu
  619.  
  620. SYNTAX
  621. MENU column, item, state[, strexpr]
  622.  
  623. COMMENTS
  624.  
  625. Superbase let you define up to 10 menu each of which can have a maximum of
  626. 12 items. With the Menu command you supply the text for a single item and
  627. specify whether it will appear on the menu an enabled, disabled (ghosted)
  628. or with a check mark against it. Having defined a menu with a series of
  629. MENU commands-one for each menu item and one for the menu title-you can
  630. then use the MENU ON command to turn the menu (or menus) on. You also use
  631. MENU to specify a numeric variable which will return a value showing which
  632. item, if any, has been selected. column must be a numeric expression with a
  633. value in the range 1 to 10 giving the column number for the menu. To set up
  634. a menu in the first column on the left at the same position as the
  635. Superbase Project menu, you would enter a value of one. item must be a
  636. numeric expression with a value in the range 0 to 12, giving the number of
  637. the menu item. Item 0 is the menu heading, the text that appears on the
  638. menu bar. state can take a value of 0, 1 or 2.0 disables the item so that
  639. it appears on the menu as a ghosted option.1 enables it, 2 places a check
  640. mark against it. strexpr supplies the text for the item. For example, if
  641. you wished to define a menu in the first column which contained the option
  642. Deposits, you could enter:
  643.  
  644.     MENU 1, 3, 1, "Deposits"
  645.  
  646. This would make Deposits the third item in the menu list. To disable the
  647. Deposits option, you would enter:
  648.  
  649.     MENU 1, 3, 0
  650.  
  651. Note that you do not need to specify the text a second time.
  652.  
  653.                 5-89
  654.  
  655. EXAMPLES
  656.  
  657. 1    MENU 1, 0, 1, "Transactions"
  658.     MENU 1, 1, 1, "Deposits"
  659.     MENU 1, 2, 1, "Withdrawal"
  660.     MENU 1, 3, 1, "Direct debit"
  661.     MENU 1, 4, 1, "Standing orders"
  662.     MENU 1, 5, 1, "Credit card"
  663.     MENU ON a%, b%
  664.  
  665. NOTES
  666.  
  667. This example defines a menu in the first column with five options (items),
  668. all of them enabled. (The heading for the menu is Transactions.) MENU ON
  669. then turns the menu on. When the user selects an item, Superbase will place
  670. its column and item numbers in the variables a% and b%.
  671.  
  672. MENU CLEAR
  673. PURPOSE
  674. Turns off all user-defined menus and clears their definitions from memory.
  675.  
  676. SYNTAX
  677. MEMORY CLEAR
  678.  
  679. COMMENTS
  680.  
  681. If you want to define a new set of menus, you can use this command to clear
  682. any menus which have been defined previously. You may also use it when your
  683. menus are no longer required, in order to make the memory space they occupy
  684. available for other purposes.
  685.  
  686.                 5-90
  687.  
  688. MENU ON
  689. PURPOSE
  690. Turns user-defined menus on and specifies the variables which return the
  691. result of a menu selection.
  692.  
  693. SYNTAX
  694. MENU ON nvar1, nvar2
  695.  
  696. COMMENTS
  697.  
  698. MENU ON turns on any menus which have been defined with the MENU command
  699. and sets nvar1 and nvar2 to zero. When the user selects an item, Superbase
  700. places the column number in nvar1 and places the item number in nvar2. It
  701. also turns all the user-defined menus off. For example, if the second item
  702. in the third user-defined menu has been selected, the first numeric
  703. variable specified with MENU ON, will contain the value 3 and the second
  704. numeric variable will contain the value 2. You may sometimes want to turn
  705. the menus off without waiting for an item to be selected. You can do this
  706. with the command MENU OFF.
  707.  
  708. EXAMPLES
  709.  
  710. 1    menuloop:
  711.     MENU ON a%, b%
  712.     ON a% GOSUB sub1, sub2, sub3, sub4, sub5
  713.     GOTO menuloop
  714.  
  715. NOTES
  716.  
  717. This examples presumes that five menus have been defined and that sub1 to
  718. sub5 are subroutines which handle item selection for each menu.
  719.  
  720.                 5-91
  721.  
  722. MERGE
  723. PURPOSE
  724. Loads a text file and performs a mail merge.
  725.  
  726. SYNTAX
  727. MERGE [TEXT filename] [WHERE conditions]
  728.  
  729. COMMENTS
  730.  
  731. This command merges the data in an '.sbf' file with a form letter in the
  732. Text Editor and outputs the results to the printer. It takes data from the
  733. current open file and-if WHERE is not included-prints one letter for each
  734. record in the file. You can use WHERE to set up a filter restricting the
  735. merge operation to only those records which match the conditions specified.
  736. The TEXT option lets you specify a text file on disk; Superbase will then
  737. load the file into the Text Editor before starting the merge operation.
  738. Although Merge is the program equivalent of the Mail Merge option on the
  739. Process menu, it does not allow you to preview letters on screen before
  740. printing them. To do this, use ? TEXT with the MERGE parameter.
  741.  
  742. EXAMPLES
  743.  
  744. 1    OPEN FILE "Address"
  745.     MERGE TEXT "Mailshot1" WHERE Country LIKE "USA"
  746.  
  747. MID$
  748. PURPOSE
  749. Returns one or more characters from within a text string or text field.
  750.  
  751. SYNTAX
  752. MID$ (strexpr, nexpr1[, nexpr2])
  753.  
  754. COMMENTS
  755.  
  756. MID$ is more flexible than LEFT$ and RIGHT$ as it can extract characters
  757. from any point in a string.strexpr holds the string, and nexpr1 gives the
  758. starting point in the string.nexpr2 specifies the length of the substring
  759. to be extracted; if nexpr2 is not given, MID$ takes all the characters from
  760. the starting point to the end.
  761.  
  762.                 5-92
  763.  
  764. EXAMPLES
  765.  
  766. 1    textfieldc=MID$ (textfielda, 10, 10)
  767. 2    textfieldc=LCASE$ (MID$ (textfielda, 8))
  768. 3    MID$ (textfielda, 12, 1) LIKE[a-c]
  769. 4    x$-MID$ (textfieldc, 19, 2)
  770. 5    x$= (x$, 4)
  771. 6    ? MID$ (x$, 4, 2)
  772. 7    ASK;A$:
  773.     I%=LEN (A$)
  774.     FOR n%=I% TO 1 STEP -1
  775.     B$=B$ + MID$ (A$, n%, 1)
  776.     NEXT
  777.     ? B$
  778.  
  779. NOTES
  780.  
  781. Example 7 inputs a word into A$ and turns it back to front.
  782.  
  783.                 5-93
  784.  
  785. MINS
  786. PURPOSE
  787.  
  788. Extracts the number of minutes from a numeric value which holds the time in
  789. thousandths of a second.
  790.  
  791. SYNTAX
  792. MINS (nexpr)
  793.  
  794. COMMENTS
  795.  
  796. Usually, nexpr will be a timefield or the result of a TIMEVAL calculation.
  797.  
  798. EXAMPLES
  799.  
  800. 1    mnts%=MINS (timefield)
  801. 2    ? MINS (NOW - start%); "minutes have elapsed"
  802.  
  803. MOD
  804. PURPOSE
  805. Gives the remainder of a numeric expression after it has been divided.
  806.  
  807. SYNTAX
  808. nexpr1 MOD nexpr2
  809.  
  810. COMMENTS
  811.  
  812. nexpr1 is the number to be divided, nexpr2 is the number that divides into
  813. it (the divisor). MOD returns the remainder when nexpr1 has been divided by
  814. nexpr2. For example:
  815.  
  816.     14 MOD 3
  817.  
  818. gives 2 as a result. It is equivalent to:
  819.  
  820.     14-INT (14/3) * 3
  821.  
  822. EXAMPLES
  823.  
  824. 1    ? (2.53 * 100) MOD 100
  825.  
  826.                 5-94
  827.  
  828. NOTES
  829.  
  830. The example line strips off the integer part of a number and displays the
  831. first two figures after the decimal place.
  832.  
  833. MODIFY
  834. PURPOSE
  835. Modifies a field definition.
  836.  
  837. SYNTAX
  838. MODIFY field[, ] [field definition string] [, formula] [, formula]
  839.  
  840. COMMENTS
  841.  
  842. MODIFY is the program equivalent of the EDIT FILE option in PROJECT. It
  843. allows you to alter a field's parameters; for example, the field name or its
  844. length. The field definition and formula strings take the same form as they
  845. do with the ADD command.
  846.  
  847. EXAMPLES
  848.  
  849. 1    MODIFY Forename "Firstname; TXT REQ IXU; 15 U; 1, 12"
  850.  
  851.                 5-95
  852.  
  853. MONTH$
  854. PURPOSE
  855. Takes a julian date number and returns the month of the year as a text
  856. string.
  857.  
  858. SYNTAX
  859. MONTH$ (nexpr)
  860.  
  861. COMMENTS
  862.  
  863. The same limitations on which julian dates are acceptable apply to this
  864. function as they do to other date functions. The format of the text string
  865. is the full month name regardless of what current date format is - i.e.,
  866. January, not Jan). Associated date functions are DAY DAYS DAY$ MONTH MONTH$
  867. YEAR.
  868.  
  869. EXAMPLES
  870.  
  871. 1    textfieldc=MONTHS$ (datefielda)
  872. 2    textfieldc=MONTH$ (datefielda + 90)
  873. 3    textfieldc=MONTH$ (TODAY)
  874. 4    x$=MONTH$ (datefielda + VAL (textfielda))
  875. 5    x$=MONTH$ (DAYS  ("11 Jan 85")
  876. 6    ? MONTH$ (datefielda + 30)
  877.  
  878.                 5-97
  879.  
  880. NEW
  881. PURPOSE
  882. Clears the program area or text area.
  883.  
  884. SYNTAX
  885. NEW [TEXT/QUERY/UPDATE]
  886.  
  887. COMMENTS
  888.  
  889. On its own, NEW erases any program that is currently in the computer's
  890. memory. When followed by TEXT, it clears the current text editor area of
  891. memory. Following it by or QUERY or UPDATE, clears their respective
  892. dialogs. Unlike the menu options Program New (and Text New) this command
  893. does not put you into the program (or text) editor.
  894.  
  895. NEWLINE
  896. PURPOSE
  897. Sends a new line character (or characters) to an output device.
  898.  
  899. SYNTAX
  900. NEWLINE[nexp]
  901.  
  902. COMMENTS
  903.  
  904. This command prints a new line at the current output device; i.e. with the
  905. screen display, it takes the cursor onto the start of the next line.nexp
  906. can be used to specify more than one new line. If nexp is not an integer,
  907. only the integer part will be taken.
  908.  
  909. EXAMPLES
  910.  
  911. 1    NEWLINE 2
  912. 2    FOR i%=1 to 20
  913.     ? i%: if i% MOD 5=0 THEN NEWLINE i%/5
  914.     NEXT i%
  915.  
  916.                 5-98
  917.  
  918. NOTES
  919.  
  920. Example 2 outputs the numbers 1 to 5 with single line spacing, 6 to 10 with
  921. double spacing, and so on up to 20.
  922.  
  923. NOW
  924. PURPOSE
  925. Gives the system time.
  926.  
  927. SYNTAX
  928. NOW
  929.  
  930. COMMENTS
  931.  
  932. NOW shows the time of day in hours and minutes, using the current time
  933. format. If you have a real-time clock in your computer or you have set the
  934. system time,  this will be the current time. Note that NOW actually holds
  935. the time in thousandths of a second. When you display the time, Superbase
  936. automatically translates it into hours and minutes.
  937.  
  938. EXAMPLES
  939.  
  940. 1    ? NOW
  941. 2    ? MINS (NOW)
  942. 3    timefield=NOW
  943.  
  944.                 5-99
  945.  
  946. NUMBASE
  947. PURPOSE
  948. Sets the numeric format in which numbers are displayed.
  949.  
  950. SYNTAX
  951. NUMBASE string
  952.  
  953. COMMENTS
  954.  
  955. NUMBASE is the program equivalent of the Number Format option in the SET
  956. menu. string must be one of Superbase's valid numeric formats, as listed
  957. Chapter 2,  Volume 1. For example, "z99999.00" or "z (+$, 000000.00".
  958.  
  959. EXAMPLES
  960.  
  961. 1    NUMBASE "z99999."
  962. Integer only format.
  963. 2    NUMBASE "+*****.00"
  964. Numbers displayed with a sign and leading cheque-protect.
  965.  
  966. ON ERROR
  967. PURPOSE
  968. Tells DML to branch to another part of the program when an error occurs.
  969.  
  970. SYNTAX 
  971. ON ERROR [[GOTO] label]
  972.  
  973. COMMENTS
  974.  
  975. Normally, DML halts program execution and displays an error message when it
  976. detects an error. ON ERROR enables error trapping, and prevents the program
  977. from halting. Once an error has been detected, it causes the program to
  978. jump to the error handling routine specified with label. You can use ERRNO
  979. in your error handling routine to check on which error has occurred, and
  980. take appropriate action. In many cases, you will want the program to resume
  981. execution after detecting an error. You can do this with the RESUME
  982. statement.
  983.  
  984.                 5-100
  985.  
  986. To disable error trapping, use ON ERROR without a following label.
  987.  
  988. EXAMPLES
  989.  
  990. 1    ON ERROR GOTO check
  991.     ......
  992.     ......
  993.     ......
  994.     check: IF ERRNO 11 THEN
  995.     RESUME
  996.     ELSE? "Are you sure you want to exit from this program?"
  997.     ? "Press Y to exit, any another key to resume"
  998.     WAIT a$
  999.     IF a$="Y" OR a$="y" THEN END ELSE RESUME
  1000.     ENDIF
  1001.  
  1002. NOTES
  1003.  
  1004. In this example, ON ERROR is used to check whether the Stop button has been
  1005. clicked on or CTRL C has been pressed. Both these events generate error
  1006. number 11, so the error handling routine (which starts at label 'check')
  1007. first tests for this error number. If it finds that another error event has
  1008. occurred, program execution is resumed at the line which caused the error.
  1009. The error handling routine then asks if the user wishes to exit or not.
  1010. Depending on the answer it receives, it either resumes execution at the
  1011. line which caused the error (the line being executed when the user pressed
  1012. STOP or CTRL C) or terminates the program.
  1013.  
  1014.                 5-101
  1015.  
  1016. ON GOSUB
  1017. PURPOSE
  1018. Calls one of a number of subroutines from a list of subroutines.
  1019.  
  1020. SYNTAX
  1021. ON nexp GOSUB label1 [, label2, label3, ...]
  1022.  
  1023. COMMENTS
  1024.  
  1025. This statement transfers program control to one of the subroutines given in
  1026. the list. The value of nexp determines which subroutine the program jumps
  1027. to. If nexp has valued at 1 the program branches to the subroutine at the
  1028. first label,  if nexp has a value of 2, it branches to the subroutine at
  1029. the second label, and so on. Once the program has branched to a subroutine,
  1030. it executes each statement in turn until it meets a RETURN statement. Then
  1031. it jumps back to the line following the ON GOSUB statement. Any label can
  1032. be repeated. If nexp is 0 or greater than the number of supplied labels,
  1033. program control drops to the next statement after the ON GOSUB statement.
  1034.  
  1035. EXAMPLES
  1036.  
  1037. 1    ON x% GOSUB lab1, lab2, lab3
  1038. 2    ON x% GOSUB lab1, lab2, lab1, lab2, lab1
  1039.  
  1040. ON GOTO
  1041. PURPOSE
  1042. Branches to one of a list of labels.
  1043.  
  1044. SYNTAX
  1045. ON nexp GOTO label [, label, ....]
  1046.  
  1047. COMMENTS
  1048.  
  1049. This command transfers program control to one of the program lines given in
  1050. the list. The value of nexp determines which label the program jumps to.
  1051.  
  1052.                 5-102
  1053.  
  1054. If nexp has valued at 1 the program branches to the first label, if nexp
  1055. has a value of 2, it branches to the second label, and so on. For a general
  1056. description of GOTO refer to GOTO itself. nexp should be a positive integer.
  1057. If it is not an integer, the whole number part will be taken. Any label can
  1058. be repeated. If nexp is 0 or greater than the number of supplied labels,
  1059. program control drops to the next statement after ON GOTO.
  1060.  
  1061. EXAMPLES
  1062.  
  1063. 1    ON x% GOTO lab1, lab2, lab3
  1064. 2    ON x% GOTO lab1, lab2, lab1, lab2, lab1
  1065.     ? "Reached here only when x% is 0 or greater than 5
  1066.  
  1067. OPEN
  1068. PURPOSE
  1069. Opens a text file on disk or Comms channel for input/output.
  1070.  
  1071. SYNTAX
  1072. OPEN filename FOR[INPUT/OUTPUT/APPEND]
  1073.  
  1074. COMMENTS
  1075.  
  1076. When used for output to a file, OPEN has the same effect as OUTPUT TO file.
  1077. There is only one channel for INPUT, and one for OUTPUT, so you cannot have
  1078. two output channels, or two input channels. However, you can have one of
  1079. each open at the same time. APPEND is an output channel and specifies that
  1080. file is to be appended to. You must not try to specify OPEN "aaa" FOR
  1081. OUTPUT APPEND. If using OPEN, file is overwritten without warning. If using
  1082. APPEND, file need not exist. If using INPUT, file must exist.
  1083.  
  1084.                 5-103
  1085.  
  1086. EXAMPLES
  1087.  
  1088. 1    OPEN "aaa" FOR OUTPUT
  1089. 2    OPEN "aaa" FOR APPEND
  1090. 3    OPEN "bbb" FOR INPUT: OPEN "aaa" APPEND
  1091.     lab1: INPUT LINE a$: ? a$
  1092.     IF NOT EOF  ("*") THEN GOTO lab1
  1093.     CLOSE INPUT: CLOSE OUTPUT
  1094.  
  1095. NOTES
  1096.  
  1097. Example 3 appends the contents of file 'bbb' to file 'aaa'. Notice that the
  1098. last line of the program CLOSEs the files that OPEN has opened. This
  1099. practise is strongly recommended: you should always close a file when you
  1100. have finished writing to it.
  1101.  
  1102. OPEN FORM
  1103. PURPOSE
  1104. Loads a form from disk and displays it in the database window.
  1105.  
  1106. SYNTAX
  1107. OPEN FORM form
  1108.  
  1109. COMMENTS
  1110.  
  1111. form must be a string expression giving the file name of a form. Superbase
  1112. will also open any database files associated with the form.
  1113.  
  1114. EXAMPLES
  1115.  
  1116. 1    OPEN FORM "Invoice"
  1117.  
  1118. OPEN FIELDS
  1119. PURPOSE
  1120. Specifies which fields are displayed.
  1121.  
  1122. SYNTAX
  1123. OPEN FIELDS [FILE sbfname] fieldlist
  1124.  
  1125.                 5-104
  1126.  
  1127. COMMENTS
  1128.  
  1129. This command is the program equivalent of the Open Fields option on the
  1130. Project Menu. fieldlist consists of the list of fields required to be open.
  1131. To remove any restrictions on which fields are shown, use the CLOSE FIELDS
  1132. command.
  1133.  
  1134. EXAMPLES
  1135.  
  1136. 1    OPEN FIELDS FILE "Address" Firstname, Lastname, Country, City
  1137.  
  1138. OPEN FILE
  1139. PURPOSE
  1140. Opens a database file and its default index.
  1141.  
  1142. SYNTAX
  1143. OPEN FILE sbfname [; password]
  1144.  
  1145. COMMENTS
  1146.  
  1147. Note the distinction between OPEN FILE "aaa" which opens a database file,
  1148. and OPEN "aaa" (FOR INPUT) which opens a text file. sbfname is compulsory,
  1149. and if a password is required to access the file, then it is also
  1150. compulsory (use a semicolon to separate the filename from the password).
  1151. INDEX followed by a field name may be added to the end of an OPEN FILE
  1152. command,  allowing you to select an index other than the default index. But
  1153. it can only be used if the file has already been opened by a direct command
  1154. or an earlier program line. As explained in the entry for the INDEX
  1155. command, DML parses the whole line before executing it; so if you refer to a
  1156. field, it must be a field in a file that already been opened. Otherwise an
  1157. error will result.
  1158.  
  1159. EXAMPLES
  1160.  
  1161. 1    OPEN FILE "aaa"
  1162. 2    x$="bbb": OPEN FILE x$
  1163.  
  1164.                 5-105
  1165.  
  1166. 3     OPEN FILE "aaa"; "John"
  1167.  
  1168. NOTES
  1169. In example 3, 'John' is the password for the file 'aaa'.
  1170.  
  1171. ORDER
  1172. PURPOSE
  1173. Sets the order for Query output.
  1174.  
  1175. SYNTAX
  1176. ORDER [&nexpr]field[ASCENDING/DESCENDING] [, field]
  1177.                 ASCENDING/DESCENDING] [, .....]
  1178.  
  1179. COMMENTS
  1180.  
  1181. ORDER is a Query Language command and can only be entered in a query
  1182. section - i.e., it works in conjunction with the Query Language command
  1183. Select. This command is the program equivalent of the Order command line in
  1184. the query definition dialog: it takes the same syntax and serves the same
  1185. purpose. The field specified with the ORDER command determines the order in
  1186. which the field in the SELECT line are output. If you are familiar with the
  1187. concept of sorting,  you can think of ORDER as setting the sort 'key' for
  1188. query output. field must be a field in an open file, but it does not need
  1189. to be an indexed field; nor does it have to be one of the fields in the
  1190. SELECT line. ASCENDING and DESCENDING allow you to specify whether data is
  1191. sorted in ascending or descending order. If you specify a text field with
  1192. the ORDER command - i.e., if you specify it as the sort key-Superbase
  1193. outputs record data according to the alphabetical order of the sort field.
  1194. DESCENDING reverses the order and sorts the field from Z to A. With
  1195. numeric, date and time fields, ASCENDING sorts data in numeric, date or
  1196. time order; and DESCENDING reverses the order. By default, fields are sorted
  1197. in ascending order; so it not strictly necessary to include the ASCENDING
  1198. parameter. You can also specify more than one field in the ORDER line,
  1199. separating each with a comma. If enter two fields, the first field takes
  1200. precedence as a sort key
  1201.  
  1202.                 5-106
  1203.  
  1204. over the second field; i.e., records are first sorted according to the first
  1205. field, and then any duplicate data items are sorted according to the second
  1206. key. The same applies if there are more than two fields: the second key has
  1207. priority over the third, the third has over the fourth, and so on.
  1208.  
  1209. EXAMPLES
  1210.  
  1211. The examples illustrate how ORDER works by taking a limited set of records
  1212. and showing some of the different ways in which they may be sorted. Each
  1213. record contains data from three fields, Firstname, Lastname, and Country.
  1214.  
  1215. 1    SELECT Firstname, Lastname, Country
  1216.     ORDER Lastname
  1217.  
  1218. This examples takes Lastname as the sort key and produces the following
  1219. output:
  1220.  
  1221. FIRSTNAME        LASTNAME        COUNTRY
  1222. Pierre            Arnauld            France
  1223. William            Carter            USA
  1224. Gerde            Hemrich            West Germany
  1225. John            Miles            England
  1226. Anne            Richardson        USA
  1227. Peter            Smith            England
  1228. Robert            Brown            England
  1229.  
  1230. 2    SELECT Firstname, Lastname, Country
  1231.     ORDER Country
  1232. The output from this query would be as follows:
  1233.  
  1234. FIRSTNAME        LASTNAME        COUNTRY
  1235. Robert            Brown            England
  1236. John            Miles            England
  1237. Peter            Smith            England
  1238. Pierre            Arnauld            France
  1239. William            Carter            USA
  1240. Anne            Richardson        USA
  1241. Gerde            Hemrich            West Germany
  1242.  
  1243.                 5-107
  1244.  
  1245. 3    SELECT Firstname, Lastname
  1246.     ORDER Country DESCENDING, Lastname ASCENDING
  1247. The output from this query is:
  1248.  
  1249. FIRSTNAME        LASTNAME
  1250. Gerde            Hemrich
  1251. William            Carter
  1252. Anne            Richardson
  1253. Pierre            Arnauld
  1254. Robert            Brown
  1255. John            Miles
  1256. Peter            Smith
  1257.  
  1258. 4    SELECT Firstname, Lastname, Country
  1259.     ORDER Country, Firstname
  1260.  
  1261. This example uses Country as the primary sort key and Firstname as the
  1262. secondary key to produce the following output:
  1263.  
  1264. FIRSTNAME        LASTNAME        COUNTRY
  1265. John            Miles            England
  1266. Peter            Smith            England
  1267. Robert            Brown            England
  1268. Pierre            Arnauld            France
  1269. Anne            Richardson        USA
  1270. William            Carter            USA
  1271. Gerde            Hemrich            West Germany
  1272.  
  1273. NOTES
  1274.  
  1275. The default length for sorting is 15 characters per field. Superbase gives
  1276. equal weighing to upper case, lower case and accented instances of
  1277. characters. The & character followed by a value up to the length of the
  1278. field may precede any field, specifying the number of characters that will
  1279. be used in sorting.
  1280.  
  1281.                 5-108
  1282.  
  1283. OUTPUT TO
  1284. PURPOSE
  1285. Opens a text file on disk for output.
  1286.  
  1287. SYNTAX
  1288. OUTPUT TO filename
  1289.  
  1290. COMMENTS
  1291.  
  1292. This command makes the disk the current output device and sends any future
  1293. output to filename. It has the same effect as OPEN filename FOR OUTPUT. If
  1294. the text file already exists on disk, any output command issued after
  1295. OUTPUT TO, will overwrite the file. If you want to add data to an existing
  1296. text file,  use OPEN filename FOR APPEND.
  1297.  
  1298. EXAMPLES
  1299.  
  1300. 1    OUTPUT TO "Names"
  1301.     ? Lastname
  1302.     CLOSE OUTPUT
  1303. 2    OUTPUT TO a$
  1304.  
  1305. NOTES Example 1 stores the contents of the Lastname field (in the current
  1306. record) on disk in the text file Names.
  1307.  
  1308.                 5-109
  1309.  
  1310. PASSWORD
  1311. PURPOSE
  1312. Sets new password (or none) for a specified file.
  1313.  
  1314. SYNTAX
  1315. PASSWORD sbfname [; passwords]
  1316.  
  1317. COMMENTS
  1318.  
  1319. sbfname must be an open file and, as usual with filenames, must be included
  1320. in quotation marks. If no password is given, the existing password for the
  1321. specified file is removed.
  1322.  
  1323. EXAMPLES
  1324.  
  1325. 1    OPEN FILE "aaa; John"
  1326.     PASSWORD "aaa"
  1327. Removes passwords.
  1328. 2    PASSWORD "aaa; Rosebud"
  1329. Sets a password for the file 'aaa'.
  1330. 3    OPEN FILE "aaa; John"
  1331.     PASSWORD "aaa; John; Paul; George"
  1332. Adds passwords for read/write and read only access privileges.
  1333.  
  1334. PCOL
  1335. PURPOSE
  1336.  
  1337. Return the column position of the print head on the current output printer
  1338. or resets the print head's position.
  1339.  
  1340. SYNTAX
  1341. PCOL (nexpr)
  1342.  
  1343. COMMENTS
  1344.  
  1345. If nexpr is zero, the function returns the column position of the print
  1346. head
  1347.  
  1348.                 5-110
  1349.  
  1350. on the current printer. For the Row position, see PROW. See also LOCATE.
  1351. You can also use this function to set the counter Superbase uses to keep
  1352. track of the print head's position. Giving nexpr a positive value, sets the
  1353. counter to that value. The print head itself is not moved. This feature is
  1354. used to reset the internal count after issuing a series of printer commands
  1355. which have not in fact moved the print head, for example, after switching
  1356. to high density graphics mode.
  1357.  
  1358. EXAMPLES
  1359.  
  1360. 1    x%=PCOL (0)
  1361. 2    ? PCOL (0)
  1362.  
  1363. POSITION
  1364. PURPOSE
  1365. Sets the data pointer to a new position in an ASCII file.
  1366.  
  1367. SYNTAX
  1368. POSITION nexp
  1369.  
  1370. COMMENTS
  1371.  
  1372. When you read data from an ASCII file on disk, Superbase uses an internal
  1373. pointer to keep track of it. The OPEN file FOR INPUT command sets the
  1374. pointer to zero, the position of the first character in the file.
  1375. Thereafter it is incremented by one for each character that is input using
  1376. the INPUT command. POSITION sets the pointer to the character position
  1377. specified by nexpr. Normally, the data in an ASCII file is read into the
  1378. computer sequentially. With Position, you can input character data on a
  1379. more selective basis. You will only be able to take advantage of this
  1380. command if you know where the data is stored in a file. Superbase stores
  1381. data in variable length fields (as opposed to fixed length fields): when
  1382. you create an ASCII file from an '.sbf' file by exporting it, the amount of
  1383. space occupied on disk by field data may vary from record to record. This
  1384. means that there is no simple way of knowing the position of any particular
  1385. field or record. One solution to this problem is to create an ASCII file
  1386. from a database file using the query option Output to Disk. When you do
  1387. this, Superbase stores
  1388.  
  1389.                 5-111
  1390.  
  1391. the data in fixed length fields-each field takes the length set in the file
  1392. definition. You can then work out the number of characters occupied by a
  1393. record in the ASCII and use this figure to retrieve specific records or
  1394. fields. For example, if the record length was 49 characters, you would
  1395. enter:
  1396.  
  1397.     POSITION 49 * 5 + 1: INPUT LINE a$
  1398.  
  1399. to retrieve the fifth record in the file (you need to add one because the first
  1400. character position is zero).
  1401.  
  1402. EXAMPLES
  1403.  
  1404. 1    OPEN "Cust.asc" FOR INPUT
  1405.     FOR n%=0 to 76 * 12 STEP 77
  1406.     POSITION n%
  1407.     INPUT & 15, a$
  1408.     ? a$
  1409.     NEXT
  1410.     CLOSE INPUT
  1411.  
  1412. NOTES
  1413.  
  1414. This example inputs the first field from the first twelve records in the
  1415. ASCII file Cust.asc. It assumes that the record length is 77 characters and
  1416. that the length of the first field is 15 characters.
  1417.  
  1418. PRINT
  1419. PURPOSE
  1420. Sends information to the printer.
  1421.  
  1422. SYNTAX
  1423. PRINT[expressionlist]
  1424.  
  1425. COMMENT
  1426.  
  1427. PRINT, followed by a semicolon and nothing else, selects the printer as the
  1428. current output device. The ? command can then be used to send information
  1429. to the printer. You can also use PRINT to output information directly to
  1430. the printer, by following the command with one or more expressions. But
  1431. note that any use of PRINT makes the printer the current output device. The
  1432. items in the expression list following the Print command may be separated
  1433. by a semicolon or a comma. If a semicolon is used, Superbase will print the
  1434.  
  1435.                 5-112
  1436.  
  1437. expressions one after the another without any spaces in between; a comma has
  1438. the effect of inserting a space between items. In some circumstances, you
  1439. may also dispense with separators altogether. Thus, provided it can
  1440. distinguish between different items, Superbase will accept a list of
  1441. expressions which are entered on the line head to tail; for example:
  1442.  
  1443.     PRINT a$b$c%"Hello"
  1444.  
  1445. EXAMPLES
  1446.  
  1447. 1    PRINT;
  1448.     ? MEMORY
  1449.     DISPLAY;
  1450. 2    PRINT BF "The items in the following list will be printed in bold
  1451.                   face"
  1452.     PRINT "One", "Two", "Three"; CHR$ (12)
  1453.     DISPLAY;
  1454.  
  1455. NOTES
  1456.  
  1457. The first example prints the current program's variables and their
  1458. contents. Example 2 prints a list of items, and then sends the form feed
  1459. character - CHR$ (12) -to the printer. Both examples use the DISPLAY
  1460. command to make the screen the current output device after the print
  1461. operation is finished.
  1462.  
  1463.                 5-113
  1464.  
  1465. PROTECT
  1466. PURPOSE
  1467. Saves the current program in an encrypted form.
  1468.  
  1469. SYNTAX
  1470. PROTECT filename
  1471.  
  1472. COMMENTS
  1473.  
  1474. Use this command to ensure that program files are not seen by anyone else.
  1475. It stores a file on disk in an encrypted (scrambled) form so that it can be
  1476. run but not edited. If the first line of a program is a REM statement,
  1477. PROTECT displays that line,  but hides the rest of the program from any
  1478. attempt to edit or LIST it.
  1479.  
  1480. EXAMPLES
  1481.  
  1482. 1    PROTECT "myprog"
  1483.  
  1484. PROW
  1485. PURPOSE
  1486. Returns the row position of the print head on the current output printer.
  1487.  
  1488. SYNTAX
  1489. PROW (nexpr)
  1490.  
  1491. COMMENTS
  1492.  
  1493. If nexpr is zero, the function returns the row position of the print head
  1494. on the current printer. For the Column position, see PCOL. See also LOCATE.
  1495. Giving nexpr a positive value resets Superbase's internal row counter. See
  1496. PCOL.
  1497.  
  1498. EXAMPLES
  1499.  
  1500. 1    x%=PROW (0)
  1501. 2    ? PROW (0)
  1502.  
  1503.                 5-114
  1504.  
  1505. QUIT
  1506. PURPOSE
  1507. Exits from Superbase.
  1508.  
  1509. SYNTAX
  1510. QUIT
  1511.  
  1512. COMMENTS
  1513.  
  1514. This has same effect as selecting the Quit option from the Project menu. It
  1515. exits from Superbase and returns the user to the desktop interface.
  1516.  
  1517.                 5-115
  1518.  
  1519. READ
  1520. PURPOSE
  1521. Reads the data given in a DATA statement and assigns it to a variable or
  1522. field.
  1523.  
  1524. SYNTAX
  1525. READ var/field[, var/field] [, .....]
  1526.  
  1527. COMMENT
  1528.  
  1529. The types of variables or fields used with a READ command must match the
  1530. types of data expected-numeric variables or numeric fields for numeric data
  1531. and string variables or string fields for string data. DML uses a pointer
  1532. to keep track of where it is in the list of DATA items; that is, each time a
  1533. data item is read, DML moves the pointer on to the next item in the list.
  1534. If you wish to read the same data again, you can place a label in front of
  1535. a DATA statement and use RESTORE.
  1536.  
  1537. EXAMPLES
  1538.  
  1539. 1    READ a%, b$, fielda.filea, fielda.fileb
  1540.  
  1541. RECCOUNT
  1542. PURPOSE
  1543. Counts the number of records in a file.
  1544.  
  1545. SYNTAX
  1546. RECCOUNT (sbfname)
  1547.  
  1548. COMMENTS
  1549.  
  1550. This function returns a number showing how many records there are in the
  1551. file specified. You can use the empty string as an argument-RECCOUNT ("")
  1552. -to refer to the current file.
  1553.  
  1554. EXAMPLES
  1555.  
  1556. 1    ? RECCOUNT ("Orders")
  1557.  
  1558.                 5-116
  1559.  
  1560. 2    x%=RECCOUNT (x$)
  1561. 3    OPEN FILE ("address")
  1562.     SELECT FIRST
  1563.     FOR n%=1 to RECCOUNT ("address")
  1564.     VIEW
  1565.     SELECT NEXT
  1566.     NEXT n%
  1567.  
  1568. NOTES
  1569. Example 3 displays all the records in the file "address" in turn.
  1570.  
  1571. REM
  1572. PURPOSE
  1573. Inserts a non-executable comment (a remark) into a program.
  1574.  
  1575. SYNTAX
  1576. REM[text]
  1577.  
  1578. COMMENTS
  1579.  
  1580. REM has the effect of cancelling any statements after it. This makes it
  1581. useful when you are testing a program-placing it at the start of a
  1582. multi-statement line puts the following statements temporarily out of
  1583. action. More generally,  use REM to annotate a program in order to explain
  1584. how it works or what it does. A single quotation mark after a command
  1585. without an intervening colon also acts as a REM statement.
  1586.  
  1587. EXAMPLES
  1588.  
  1589. 1    REM this is a remark
  1590. 2    ....: FILE "aaa" open aaa
  1591. 3    ....: FILE "aaa": REM open aaa
  1592. 4    FILE "aaa": REM eliminate next commands: INDEX abc: SELECT 
  1593.     FIRST
  1594.  
  1595.                 5-117
  1596.  
  1597. NOTES
  1598.  
  1599. Examples 2 and 3 have identical effects and demonstrate the two different
  1600. ways of entering a comment. In example 4, the REM statement means that the
  1601. INDEX and SELECT FIRST commands are not executed.
  1602.  
  1603. REMOVE FILE
  1604. PURPOSE
  1605. Removes a database file from disk, along with its associated definition and
  1606. index files.
  1607.  
  1608. SYNTAX
  1609. REMOVE sbfname
  1610.  
  1611. COMMENT
  1612.  
  1613. This command operates in the same way as the Remove File menu option. Note
  1614. that you are not asked for confirmation-the file is just removed.
  1615.  
  1616. EXAMPLES
  1617.  
  1618. 1    REMOVE FILE "aaa"
  1619. 2    REMOVE FILE "DF1: aaa"
  1620. 3    REMOVE FILE "GEM\SBASE\aaa"
  1621.  
  1622. REMOVE FROM
  1623. PURPOSE
  1624. Removes records which match the conditions specified.
  1625.  
  1626. SYNTAX
  1627. REMOVE FROM FILE sbfname[WHERE conditions]
  1628.  
  1629. COMMENTS
  1630.  
  1631. This command works in the same way as the equivalent PROJECT-REMOVE-FILE
  1632. menu option. It deletes records from a file on disk.
  1633.  
  1634.                 5-118
  1635.  
  1636. FILE sbfname has to be open, and if the file requires a password, you must
  1637. have full access to it.
  1638.  
  1639. WHERE conditions is optional and is set up in the same way as a filter. If
  1640. it is not included, the command acts on all the records in a file.
  1641.  
  1642. EXAMPLES
  1643.  
  1644. 1    REMOVE FROM FILE "aaa" WHERE Lastname LIKE "[a-c]*"
  1645. 2    REMOVE FROM FILE "aaa"
  1646. This empties the file of all its data.
  1647.  
  1648. REMOVE INDEX
  1649. PURPOSE
  1650. Removes an index on the current file from disk.
  1651.  
  1652. SYNTAX
  1653. REMOVE INDEX index
  1654.  
  1655. COMMENT
  1656.  
  1657. This command works in the same way as the Remove Index option on the
  1658. Project menu. The file must be open, and, if it requires a password, you
  1659. must have full access privileges. index is the name of an indexed field. It
  1660. can be entered with a file extension.
  1661.  
  1662. EXAMPLES
  1663.  
  1664. 1    REMOVE fielda
  1665. 2    REMOVE fieldb.aaa
  1666.  
  1667.                 5-119
  1668.  
  1669. RENAME
  1670. PURPOSE
  1671. Renames a file on disk.
  1672.  
  1673. SYNTAX
  1674. RENAME old.filename[, /TO]new.filename
  1675.  
  1676. COMMENT
  1677.  
  1678. This command works in the same way as the RENAME command in MS DOS or Amiga
  1679. DOS, but allows you to rename a file without exiting from Superbase. You
  1680. have the option of using either a comma or the keyword TO as the separator
  1681. between the two file names.
  1682.  
  1683. EXAMPLES
  1684.  
  1685. 1    RENAME "aaa", "bbb"
  1686. 2    RENAME "aaa" TO "bbb"
  1687.  
  1688. REORGANIZE
  1689. PURPOSE
  1690. Reorganizes the current file or a specified file.
  1691.  
  1692. SYNTAX
  1693. REORGANIZE [FILE sbfname] [TO]sbfnameb
  1694.  
  1695. COMMENTS
  1696.  
  1697. This command is the program equivalent of the Reorganize option on the
  1698. System menu (see Chapter 8, Volume 1). It takes a file on disk, reorganizes
  1699. it, and stores it as sbfnameb. IF the FILE option is not used, the current
  1700. file is reorganized. sbfnameb can include the pathname for another
  1701. directory or disk. If you enter a pathname without a file name following
  1702. it, the file will be reorganized under the same name.
  1703.  
  1704.                 5-120
  1705.  
  1706. Note that you cannot reorganize a file under the same name in the same
  1707. directory; i.e. if a pathname is not supplied, sbfnameb must not be the same
  1708. as sbfnamea.
  1709.  
  1710. EXAMPLES
  1711.  
  1712. 1    FILE "aaa": REORGANIZE TO "copy"
  1713. 2    REORGANIZE "aaa" TO "a: mydir\"
  1714. 3    REORGANIZE "aaa" TO "DF1: Mydir/"
  1715. Example 1 creates a reorganized file 'copy' in the current directory,
  1716. Example 2 creates a reorganized file 'aaa' in directory mydir on the disk
  1717. in drive a (or,  in example 3, drive DF1 on the Amiga).
  1718.  
  1719. REPLICATE
  1720. PURPOSE
  1721. Replicates a character a given number of times.
  1722.  
  1723. SYNTAX
  1724. REPLICATE (strexp, nexp)
  1725.  
  1726. COMMENTS
  1727.  
  1728. REPLICATE repeats the character in strexpr the number of times given in
  1729. nexp.
  1730.  
  1731. EXAMPLES
  1732.  
  1733. 1    textfieldc=REPLICATE ("*", 10)
  1734. 2    x$=REPLICATE (textfieldc, 4)
  1735. 3    x$=REPLICATE (MID$ (x$, 4, 2), 6)
  1736. 4    x$=REPLICATE  (" ", 25)
  1737.  
  1738. NOTES
  1739. Example 4 fills x$ with 25 spaces, but see function SPACE$.
  1740.  
  1741.                 5-121
  1742.  
  1743. REPORT
  1744. PURPOSE
  1745. Specifies the field or fields on which totals (and other report statistics)
  1746. will be produced for the report as a whole.
  1747.  
  1748. SYNTAX
  1749. REPORT [SUMMARIZE] [params]fieldname[, fieldname][, ....]
  1750.  
  1751. COMMENT
  1752.  
  1753. Report has two uses. When you create a Report with the Forms Editor,
  1754. Superbase generates a Report statement by noting the fields which have been
  1755. specified in an AFTER REPORT section; i.e., if the AFTER REPORT section in a
  1756. Report program contains the statements:
  1757.  
  1758.     ? SUM amount
  1759.     ? COUNT deposits
  1760.  
  1761. Superbase will generate the following line in the program:
  1762.  
  1763.     REPORT amount, deposits
  1764.  
  1765. If you are writing a Report program yourself (as opposed to modifying a
  1766. program generated by Superbase), you should remember to enter a Report
  1767. statement including the names of any fields for which you wish totals and
  1768. other report statistics to appear. The second application for REPORT is a
  1769. query language command. In this context,  it allows you to create a program
  1770. line which is equivalent to the REPORT command line in the query definition
  1771. dialog. REPORT is used here to specify the fields for which totals and
  1772. other statistical. When you use the SUMMARIZE option, Superbase suppresses
  1773. the main detail of the report and prints just the summary information.
  1774.  
  1775.                 5-122
  1776.  
  1777. REQUEST
  1778. PURPOSE
  1779. Displays a Superbase dialog.
  1780.  
  1781. SYNTAX
  1782. REQUEST text1, text2, type[, nvar[, strvar[, len]]]
  1783.  
  1784. COMMENT
  1785.  
  1786. REQUEST allows you to select one of Superbase's dialogs and display it on
  1787. screen. To some extent you can also customize a dialog to your own
  1788. requirements. Thus you can place a title in box, and you can specify the
  1789. text string that initially appears in the dialog's command line or
  1790. selection box. For certain dialogs, it also possible to specify the length
  1791. of the box. text 1 and text2 are the first and second line of the dialog
  1792. title. They must be included although they can be "". The maximum length
  1793. for each line is 50 characters. type is the dialog type. It defines the
  1794. type of dialog according to the table shown below. nvar is a numeric
  1795. variable. It returns a value of 1 if OK is selected and there is an entry
  1796. into the string dialog. If CANCEL is selected or there is no entry into the
  1797. string dialog, it returns 0. strvar can be used with dialogs which have a
  1798. string entry box and has two functions: It is used to place a default value
  1799. into the string box, i.e., the text string in strvar is entered into the
  1800. string box when the dialog is displayed. It returns the string which the
  1801. user enters in the box. len specifies the length of the string box (where
  1802. appropriate). This is particularly useful for the information dialogs. For
  1803. dialog types 5-16 it is not need as Superbase sets the box to the maximum
  1804. file name length of 50 characters. For dialog type 4 len must be specified.
  1805.  
  1806.                 5-123
  1807.  
  1808. Types of Dialogs available:
  1809.  
  1810. TYPE    DIALOG            BUTTONS
  1811. 0    string            OK
  1812. 1    string            OK CANCEL
  1813. 2    string            OK
  1814. 3    string            OK CANCEL
  1815. 4    string            OK CLEAR CANCEL
  1816. 5    Database Files        OK CLEAR CANCEL
  1817. 6    Open Fields List    OK CLEAR CANCEL
  1818. 7    Indexed fields        OK CLEAR CANCEL
  1819. 8    Non indexed fields    OK CLEAR CANCEL
  1820. 9    Field Info        OK CLEAR CANCEL 
  1821. 10    Open Database Files    OK CLEAR CANCEL
  1822. 11    Database Files        OK CLEAR CANCEL
  1823. 12    Program Files        OK CLEAR CANCEL
  1824. 13    Text Files        OK CLEAR CANCEL
  1825. 14    Query Files        OK CLEAR CANCEL
  1826. 15    Update Files        OK CLEAR CANCEL
  1827. 16    Function Key Files    OK CLEAR CANCEL
  1828. 17    Directory listing    OK CLEAR CANCEL
  1829. 18    Subdirectory List    OK CLEAR CANCEL
  1830.  
  1831. Note that a database file must be open before dialogs 5 to 9 can be
  1832. selected.
  1833.  
  1834. EXAMPLES
  1835.  
  1836. 1    REQUEST "", "", 2, 
  1837. 2    a%=0:a$="":REM initialize nvar and strvar
  1838.     REQUEST "Select a program", "", 5, a%, a$, 32
  1839.     IF a%=0 THEN ? "OK so you do not want to run a program":END
  1840.     CHAIN a$
  1841. 3    a%=0:a$=":OPEN FILE "aaa"
  1842.     REQUEST "Select an Index", "", 7, a%, a$
  1843.     IF a%=0 THEN END
  1844.     INDEX a$
  1845.     lablook:a$="":REQUEST "Enter a key", "", 1, a%, a$, 15
  1846.     IF a%=0 THEN END
  1847.     SELECT KEY a$
  1848.     IF FOUND  ("aaa") THEN GOTO lablook2
  1849.     REQUEST "No Record with key" + a$, "See Nearest ?", 1a%
  1850.  
  1851.                 5-124
  1852.  
  1853.     IF a%=0 THEN GOTO lablook
  1854.     lablook2:VIEW:WAIT FOR 5:GOTO lablook
  1855.  
  1856. NOTES
  1857.  
  1858. Example 1 puts an "OK" dialog up for 2 seconds. Example 2 allows the user
  1859. to select a program to run. Example 3 in essence duplicates the key lookup
  1860. function from the ? button on the Superbase Control Panel. Note the
  1861. concatenation of the first title line of the dialog on the third from last
  1862. line.
  1863.  
  1864. RESTORE
  1865. PURPOSE
  1866. Moves the data pointer back to the first DATA statement, or to a specified
  1867. label.
  1868.  
  1869. SYNTAX
  1870. RESTORE[label]
  1871.  
  1872. COMMENTS
  1873.  
  1874. The data pointer is the internal pointer that Superbase uses to keep track
  1875. of which DATA statements have been read. Initially it has a value of zero
  1876. and points to the first DATA statement. As you READ data into variables or
  1877. fields,  the data pointer is increased by one for every data item read.
  1878. This command resets the data pointer. If you do not specify label, the data
  1879. pointer is reset to the beginning of the first DATA statement. If you
  1880. specify label, the data pointer is reset to the data statement following
  1881. the label.
  1882.  
  1883. EXAMPLES
  1884.  
  1885. 1    RESTORE
  1886. 2    RESTORE datalabel1
  1887.  
  1888.                 5-125
  1889.  
  1890. RESUME
  1891. PURPOSE
  1892. Resumes execution after an error.
  1893.  
  1894. SYNTAX
  1895. RESUME[NEXT/label]
  1896.  
  1897. COMMENTS
  1898.  
  1899. The RESUME command works in conjunction with the ON ERROR GOTO command
  1900. which is used to trap program errors. RESUME, on its own, returns program
  1901. control to the statement that caused the error. When NEXT is included, the
  1902. statement returns program control to the statement after the one which
  1903. caused the error. label transfers program control to the label specified.
  1904.  
  1905. EXAMPLES
  1906.  
  1907. 1    REM Top of program
  1908.     ON ERROR GOTO errlab1
  1909.     SELECT FIRST:? fieldname
  1910.     .....
  1911.     .....
  1912.     errlab1: IF ERRNO=44 THEN OPEN FILE "aaa": REM file not open
  1913.     RESUME
  1914. 2    REM read data
  1915.     ON ERROR GOTO errlab2
  1916.     .....
  1917.     READ x$
  1918.     .....
  1919.     endread:.....
  1920.     .....
  1921.     .....
  1922.     errlab2: IF ERRNO=18 THEN RESUME endread: REM out of data
  1923.  
  1924.                 5-126
  1925.  
  1926. RETURN
  1927. PURPOSE
  1928. Returns from a subroutine.
  1929.  
  1930. SYNTAX
  1931. RETURN
  1932.  
  1933. COMMENTS
  1934.  
  1935. The RETURN command is used to mark the end of a subroutine. It instructs
  1936. the computer to transfer program control to the statement immediately
  1937. following the GOSUB or ON GOSUB statement which initially called the
  1938. subroutine. See GOSUB.
  1939.  
  1940. RIGHT$
  1941. PURPOSE
  1942. Extracts one or more characters from a text string or text field, starting
  1943. from the right-hand end of the string.
  1944.  
  1945. SYNTAX
  1946. RIGHT$ (strexpr, nexpr)
  1947.  
  1948. COMMENTS
  1949.  
  1950. This function starts at the right of a string given in strexpr and extracts
  1951. nexpr characters.
  1952.  
  1953. EXAMPLES
  1954.  
  1955. 1    textfieldc=RIGHT$ (textfielda, 10)
  1956. 2    textfieldc=LCASE$ (RIGHT$ (textfielda, 1))
  1957. 3    IF RIGHT$ (textfielda, 1) ="s" THEN....
  1958. 4    x$=RIGHT$ ("ABCD", 2)
  1959. 5    x$=RIGHT$ (x$, 4)
  1960.  
  1961.                 5-127
  1962.  
  1963. RND
  1964. PURPOSE
  1965. Returns a random number.
  1966.  
  1967. SYNTAX
  1968. RND (nexpr)
  1969.  
  1970. COMMENTS
  1971.  
  1972. What the function returns depends on the value of nexpr.
  1973. It nexpr is less than zero, the random number generator is reseeded. This
  1974. means that a new series of random numbers will be generated, completely
  1975. unrelated to the last series. It also allows you to generate the same
  1976. series again for testing purposes, by entering the same seed. If nexpr is
  1977. zero, the number returned is the same as the previous one. If nexpr is
  1978. positive, a new random number is generated. The random number returned is
  1979. in the range 0 to 1. Technically, it is never zero and never unity, but all
  1980. values between 0 and one will be randomly generated and the distribution of
  1981. numbers will be relatively flat.
  1982.  
  1983. EXAMPLES
  1984.  
  1985. 1    numfieldc=RND (numfielda)
  1986. 2    numfieldc=RND (2) * 12
  1987. 3    textfieldc=MID$ (x$, RND (2) * 6 + 1, RND (2) * 12 + 1)
  1988. 4    $x=RND ($y)
  1989. 5    ? RND ($x)
  1990.  
  1991.                 5-128
  1992.  
  1993. ROW
  1994. PURPOSE
  1995. Returns the row position of the cursor on the screen.
  1996.  
  1997. SYNTAX
  1998. ROW (0)
  1999.  
  2000. COMMENTS
  2001.  
  2002. This function shows how far down the screen the cursor is. For the column
  2003. position, see COL.
  2004.  
  2005. EXAMPLES
  2006.  
  2007. 1    x%=ROW (0)
  2008. 2    ? ROW (0)
  2009.  
  2010. NOTES
  2011. In practise, example 2 would be pointless, because it changes the position
  2012. of the cursor in the course of printing it.
  2013.  
  2014. RUN
  2015. PURPOSE
  2016. Executes a program from memory, or loads it from disk and then runs it.
  2017.  
  2018. SYNTAX
  2019. RUN[filename]
  2020.  
  2021. COMMENTS
  2022.  
  2023. This will run the program currently in memory when used as a command or as
  2024. a program statement without the filename option. If filename is used to
  2025. specify a program, Superbase loads the program from disk and then runs it.
  2026. If filename is specified, it must be a string variable or a string constant
  2027. in quotation marks.
  2028.  
  2029.                 5-129
  2030.  
  2031. SAVE
  2032. PURPOSE
  2033. Saves any of the following types of file: program, text, function key,
  2034. query, and update files.
  2035.  
  2036. SYNTAX
  2037. SAVE [TEXT/KEY/QUERY/UPDATE]filename[, TEXT]
  2038.  
  2039. COMMENTS
  2040.  
  2041. filename is required. Superbase detects files of different types as
  2042. follows:
  2043.  
  2044.     aaa.sbk is a saved function key set
  2045.     aaa.sbp is a saved program
  2046.     aaa.sbq is a saved query
  2047.     aaa.sbt is a saved document (text)
  2048.     aaa.sbu is a saved update
  2049.  
  2050. If none of the options TEXT, KEY, QUERY or UPDATE is used, Superbase
  2051. assumes that filename refers to an '.sbp' file and attempt to save a
  2052. program file. If you include TEXT as the last parameter, DML saves a
  2053. program file as a text file. Only one of the options, TEXT, KEY, QUERY or
  2054. UPDATE, can be used at a time.
  2055.  
  2056. SAVE FILE
  2057. PURPOSE
  2058. Saves the current file definition.
  2059.  
  2060. SYNTAX
  2061. SAVE FILE sbfname
  2062.  
  2063. COMMENTS
  2064.  
  2065. When you create a new file, you can use MAKE to save the file definition.
  2066. SAVE FILE, however, must be used after you have edited a file definition
  2067. with MODIFY.
  2068.  
  2069.                 5-130
  2070.  
  2071. SAY
  2072. PURPOSE
  2073. Converts a text string into speech, using the Amiga's speech synthesis
  2074. facility.
  2075.  
  2076. SYNTAX
  2077. SAY [USING parameters]exprlist
  2078.  
  2079. COMMENTS
  2080.  
  2081. SAY is only available on the Amiga. The parameters for the USING option are
  2082. in this order:
  2083.  
  2084.     Pitch, Inflection, Rate (wpm), Sex, Phonemic
  2085.  
  2086. The following table gives the range of each parameter and its default
  2087. value:
  2088.  
  2089. PARAMETER    RANGE        DEFAULT        NOTES
  2090. Pitch        65-320        110
  2091. Inflection    0-1        0        0 is expressive, 1 is
  2092.                                                   monotone
  2093. Rate in wpm    40-400        150
  2094. Sex        0-10        0        0 is male, 1 is female
  2095. Phonemic    0-1        0        0 translates to phonemes, 
  2096.                           1 assumes phonemes
  2097.  
  2098. SAY only works with string expressions. To hear an external sound field use
  2099. the SHOW command.
  2100.  
  2101. EXAMPLES
  2102.  
  2103. 1    OPEN FILE "Address"
  2104.     SELECT FIRST
  2105.     WHILE NOT EOF ("Address")
  2106.     SAY Forename; Lastname; "comes from"; City; Country
  2107.     SELECT NEXT
  2108.     WEND
  2109. 2    SAY USING 280, 1, 200, 1, 0"Hello there", USING 140, 1, 200, 0, 0
  2110.     "Well, hello there"
  2111.  
  2112.                 5-131
  2113.  
  2114. SCRDUMP
  2115. PURPOSE
  2116. Outputs a copy of the screen to the printer-carries out a screen dump.
  2117.  
  2118. SYNTAX
  2119. SCRDUMP
  2120.  
  2121. COMMENTS
  2122.  
  2123. Only available on the Amiga.
  2124.  
  2125. SECS
  2126. PURPOSE
  2127. Returns the numbers of seconds from a time field.
  2128.  
  2129. SYNTAX
  2130. SECS (nexpr)
  2131.  
  2132. COMMENTS
  2133.  
  2134. nexpr will usually contain a time in milliseconds (thousandths of a second)
  2135. from a time field or from the result of a TIMEVAL calculation.
  2136.  
  2137. EXAMPLES
  2138.  
  2139. 1    scnds%=SECS (timefield)
  2140. 2    scnds%=SECS (TIMEVAL ("10:22AM"))
  2141.  
  2142. SELECT COMMANDS
  2143.  
  2144. The following SELECT commands relate to Record selection:
  2145.  
  2146.     SELECT CURRENT
  2147.     SELECT DUPLICATE
  2148.     SELECT FIRST
  2149.     SELECT KEY
  2150.     SELECT LAST
  2151.     SELECT NEXT
  2152.  
  2153.                 5-132
  2154.  
  2155.     SELECT PREVIOUS
  2156.     SELECT REMOVE
  2157.     SELECT WHERE
  2158.  
  2159. SELECT commands can only be used on an open database file, although this
  2160. does not have to be the current file. These commands do not display records
  2161. on screen. To do this, you need to use VIEW. Similarly, although they can
  2162. be used with any open file, the SELECT commands do not automatically make
  2163. an open file the current file. For example, SELECT LAST selects the last
  2164. record in a file (on index) even if the file is not current. If the file is
  2165. current, executing the VIEW command will be enough to display the last
  2166. record. But with any other open file, you will also need to use the FILE
  2167. command (as opposed to the FILE parameter) before you can display the
  2168. record (FILE makes an open file the current file).
  2169.  
  2170. SELECT CURRENT
  2171. PURPOSE
  2172. Selects the current record.
  2173.  
  2174. SYNTAX
  2175. SELECT CURRENT [FILE sbfname] [INDEX index]
  2176.  
  2177. COMMENT
  2178.  
  2179. This command has the same effect as the Current Record button on the
  2180. Control Panel at the bottom of the screen. Use INDEX to select the current
  2181. record using a different index.
  2182.  
  2183.                 5-133
  2184.  
  2185. SELECT DUPLICATE
  2186. PURPOSE
  2187. Selects the next record with the same key.
  2188.  
  2189. SYNTAX
  2190. SELECT DUPLICATE [INDEX index]
  2191.  
  2192. COMMENTS
  2193.  
  2194. This command finds the next record with the same key as the current key.
  2195. The key is the field on which the file is currently indexed. If SELECT
  2196. DUPLICATE fails to find a record with the same key, the EOF function is set
  2197. to true.
  2198.  
  2199. 1    SELECT FIRST:VIEW:x%=1
  2200.     lab1:SELECT DUPLICATE
  2201.     IF NOT EOF ("aaa") THEN VIEW:x%=x% + 1:GOTO lab1
  2202.     ? "End of "; x%; "duplicates-strike key"
  2203.     lab2:SELECT PREVIOUS:SELECT NEXT:IF EOF ("aaa") THEN END
  2204.     CLS:VIEW:GOTO lab1
  2205.  
  2206. Example 1 displays duplicate entries on an index. In Table view, it shows a
  2207. set of records at a time.
  2208.  
  2209. SELECT FIRST
  2210. PURPOSE
  2211. Selects the first record in the current or specified index sequence.
  2212.  
  2213. SYNTAX
  2214. SELECT[FILE sbfname] [INDEX index]
  2215.  
  2216. COMMENTS
  2217.  
  2218. This command has the same effect as the First Record button on the Control
  2219. Panel. Use the INDEX parameter to alter the current index.
  2220.  
  2221. EXAMPLES
  2222.  
  2223. 1    SELECT FIRST
  2224.  
  2225.                 5-134
  2226.  
  2227. 2    SELECT FIRST "Stock" INDEX Prodcode
  2228.  
  2229. NOTES
  2230.  
  2231. Example 1 selects the first record in the current file according to the
  2232. current index. Example 2 selects the first record in the Stock file
  2233. according to the Prodcode index.
  2234.  
  2235. SELECT KEY
  2236. PURPOSE
  2237. Selects the first record with matching string.
  2238.  
  2239. SYNTAX
  2240. SELECT KEY string [FILE sbfname] [INDEX index]
  2241.  
  2242. COMMENTS
  2243.  
  2244. This command has the same effect as the Key Lookup button on the Control
  2245. Panel. It searches the file for the first record whose index field matches
  2246. the string specified. Unlike the other SELECT commands, this command does
  2247. not affect the EOF function,  but instead sets the FOUND Function (see the
  2248. example given for FOUND).
  2249.  
  2250. EXAMPLES
  2251.  
  2252. 1    SELECT KEY "Zollinger"
  2253.     VIEW
  2254. 2    SELECT KEY "Johnson" FILE "Customer" INDEX Lastname
  2255.     IF FOUND ("Customer") THEN FILE "Customer":VIEW
  2256.  
  2257. NOTES
  2258.  
  2259. Example 1 selects the record in the current file whose Lastname field
  2260. contains the name Zollinger. It assumes that the current file is indexed on
  2261. Lastname. The program in example 2 selects the record in the Customer file
  2262. whose Lastname field contains the name Johnson. The Customer file must have
  2263. already been opened, but it does not have to be the current file. If the
  2264. program finds a record with a matching key, it uses the FILE command to
  2265. make the Customer file current and then displays the record.
  2266.  
  2267.                 5-135
  2268.  
  2269. SELECT LAST
  2270. PURPOSE
  2271. Selects the last record in the current or specified index sequence.
  2272.  
  2273. SYNTAX
  2274. SELECT [FILE sbfname] [INDEX index]
  2275.  
  2276. COMMENTS
  2277.  
  2278. Has the same effect as the Last Record button on the Control Panel.
  2279.  
  2280. SELECT NEXT
  2281. PURPOSE
  2282. Selects the next record in the current or specified index sequence.
  2283.  
  2284. SYNTAX
  2285. SELECT NEXT [FILE sbfname] [INDEX index]
  2286.  
  2287. COMMENT
  2288.  
  2289. Has the same effect as the Next Record button on the Control Panel.
  2290.  
  2291. SELECT PREVIOUS
  2292. PURPOSE
  2293. Selects the previous record in the current or specified index sequence.
  2294.  
  2295. SYNTAX
  2296. [FILE sbfname] [INDEX index]
  2297.  
  2298. COMMENTS
  2299.  
  2300. This command has the same effect as the Previous button on the Control
  2301. Panel.
  2302.  
  2303.                 5-136
  2304.  
  2305. SELECT REMOVE
  2306. PURPOSE
  2307. Removes the current record in the current file or another open file.
  2308.  
  2309. SYNTAX
  2310. SELECT [FILE sbfname]
  2311.  
  2312. COMMENTS
  2313.  
  2314. This command has the same effect as the Remove option on the Record menu.
  2315.  
  2316. SELECT WHERE
  2317. PURPOSE
  2318.  
  2319. Selects first record that matches the filter conditions or removes the
  2320. filter.
  2321.  
  2322. SYNTAX
  2323. SELECT WHERE[[FILE sbfname] [conditions]]
  2324.  
  2325. COMMENTS
  2326.  
  2327. This command has the same effect as the Filter button on the Control Panel.
  2328. conditions is set up in the same way as the string gadget in the Filter
  2329. requestor. If not specified, the current filter conditions are cleared.
  2330. SELECT WHERE can only be used to set a single file filter. If you enter the
  2331. name of a field which also occurs in another open file, you should include
  2332. the file the file name as an extension. Otherwise, Superbase may assume you
  2333. are attempting to use this command in a multi-file operation, and will
  2334. issue the error message:
  2335.  
  2336.     Can't do this
  2337.     This Where statement must be single file
  2338.  
  2339. If you wish to set a multi-file filter - to select records whose field data
  2340. matches the data in another file - use the LOOKUP function or the query
  2341. language command WHERE.
  2342.  
  2343.                 5-137
  2344.  
  2345. EXAMPLE
  2346.  
  2347. 1    SELECT WHERE fielda LIKE "[a-c]"
  2348. 2    SELECT WHERE "Stock" fieldb LIKE "[a-c]"
  2349. 3    SELECT WHERE
  2350.  
  2351. NOTES
  2352.  
  2353. Once set, the Control Panel filters remains active until it is cleared.
  2354. Example 3 clears the filter which may have been set by a previous SELECT
  2355. WHERE command or by direct entry in the filter dialog.
  2356.  
  2357. QUERY LANGUAGE COMMANDS
  2358.  
  2359. DML's Query Language commands allow you to create a program which duplicates
  2360. a Superbase query. These commands are used in report programs created by
  2361. the Forms Editor; but they can also be used for any of the query
  2362. applications described in Chapter 11, Volume 1 - sorting records, creating
  2363. complex multi-file filters, merging files, and so on. In Superbase a query
  2364. is defined by the four command lines in the query definition dialog
  2365. (Chapter 5, Volume 1, introduces this dialog; Chapter 11 explains it in more
  2366. detail). These command lines can be reproduced in a program by using the
  2367. query language commands. SELECT is used to define the Fields command line;
  2368. REPORT defines the Report command line; WHERE corresponds to the FILTER
  2369. line; and ORDER is used for the Order line. You will find a explanation of
  2370. these commands under their respective keyword entries. Here, we will
  2371. describe how they work together to form a query section. A query section
  2372. must start with the SELECT command and it should end with END SELECT. Any
  2373. other query language commands are optional; you will include them according
  2374. to your requirements. Thus, if you wish to use a filter, you will include a
  2375. WHERE command within the query section.
  2376.  
  2377.                 5-138
  2378.  
  2379. Likewise, if you wish to use reporting functions such as SUM and COUNT, you
  2380. will need to insert a REPORT command after the SELECT command and before
  2381. END SELECT. You can think of REPORT, WHERE and ORDER as modifying the query
  2382. output which is specified with the SELECT command. When SELECT is used on
  2383. its own - to form a single line query section - it outputs data from each
  2384. record in a specified file (or files) in turn. For example:
  2385.  
  2386.     SELECT Lastname.Address, Country.Address:
  2387.     END SELECT
  2388.  
  2389. This outputs a line showing the contents of the fields Lastname and Country
  2390. for each of the records in the Address file. As such, SELECT works in the
  2391. same way as the ? command except that it acts on all the records in a file.
  2392. If you inserted TO PRINTER after Country.Address in the example above,
  2393. SELECT would output data to the printer. The TO device parameter provides
  2394. an equivalent to the Output options in the query definition dialog. You can
  2395. use to specify an output device other than the screen:the printer, an ASCII
  2396. file, or a new '.sbf' file.
  2397.  
  2398. A QUERY LANGUAGE EXAMPLE
  2399.  
  2400. Any query created with the query definition dialog can be reproduced under
  2401. program control. We can illustrate this by converting a query file (an
  2402. '.sbq' file) into a program, taking the Deptran file supplied with the
  2403. demonstration file disk as an example. Deptran can be displayed on screen
  2404. using the LIST option from the System menu. It looks like this:
  2405.  
  2406.     SB
  2407.     CLIENTS
  2408.     DEPOSITS
  2409.     Deposit Transaction Report
  2410.     ON "Clients" Firstname.Clients, Lastname.Clients, ON "Deposits"
  2411.     @24 Bank, Amount, Deposits
  2412.     REPORT SUM Amount COUNT GROUP Lastname.Clients SUM
  2413.     Amount
  2414.     Lastname.Clients=Lastname.Deposits
  2415.     Lastname.Clients
  2416.  
  2417. SB on the first line indicates that this is a Superbase Professional query
  2418. file as opposed to one created in Superbase Personal. The next two lines
  2419. contain the names of the database files which are associated with this
  2420. query. 'Deposit
  2421.  
  2422.                 5-139
  2423.  
  2424. Transaction Report' is the query title, and the remaining lines represent
  2425. the four query command lines. Before we can load this file into the Program
  2426. Editor, we need to change its name to Deptran.sbp. To do this, select COPY
  2427. from the System menu and, after selecting Deptran.sbq as the file to be
  2428. copied, enter then name Deptran.sbp. You can now load the file into the
  2429. Program Editor using the Program open option. Converting it to a program is
  2430. just a matter of deleting two lines and inserting keywords in the others.
  2431. Once you have made these changes, the program should look like this:
  2432.  
  2433.     OPEN FILES "CLIENTS"
  2434.     OPEN FILE "DEPOSITS"
  2435.     SELECT ON "Clients" Firstname.Clients, Lastname.Clients, ON
  2436.     "Deposits" @24 Bank, Amount, Deposits
  2437.     REPORT SUM Amount COUNT GROUP Lastname.Clients SUM
  2438.     Amount
  2439.     WHERE Lastname.Clients=Lastname.Deposits
  2440.     ORDER Lastname.Clients
  2441.  
  2442. Note that the report line is the same as in the query file and does not
  2443. need to be altered. If you now run this program, it will have the same
  2444. effect as running Deptran from the query definition dialog (by clicking on
  2445. OK).
  2446.  
  2447. SELECT
  2448. PURPOSE
  2449. Specifies which are to be output from a query.
  2450.  
  2451. SYNTAX
  2452. SELECT [params]fields[TO device]:[statements]:END SELECT
  2453.  
  2454. COMMENTS
  2455.  
  2456. SELECT is a Query Language command and can used on its own or with other
  2457. Query Language commands to form a query section. fields can be one or more
  2458. field names from one or multiple files.params can be any of the output
  2459. format parameters as listed in the section which describes the ? commands.
  2460.  
  2461.                 5-140
  2462.  
  2463. In addition, there are three format parameters which can only be used with
  2464. the SELECT command:ON file, AS heading and FIELD. The syntax and function
  2465. of these parameters in described in their respective sections in Chapter
  2466. 11, Volume 1. TO device specifies the device to which the query output will
  2467. be sent. If it is not included output is to the screen. The device options
  2468. are:
  2469.  
  2470.     TO PRINTER
  2471.  
  2472. Outputs to the printer.
  2473.  
  2474.     TO FILE file
  2475.  
  2476. Creates a new '.sbf' file on disk under the file name specified, using the
  2477. query output.
  2478.  
  2479.     TO file
  2480.  
  2481. Outputs to the ASCII file on disk specified by file.
  2482. statements can be other query language statements formed with the commands
  2483. REPORT, WHERE, and ORDER. END SELECT is used to indicate the end of a query
  2484. section. It is not always necessary to include END SELECT, but you must
  2485. provide Superbase with some indication of where the query section finishes
  2486. and where the rest of the program starts. Otherwise, the statements
  2487. following the last line in the query section will be interpreted as part of
  2488. a multi-line SELECT statement. As an alternative to END SELECT, you could
  2489. use a blank line.
  2490.  
  2491.                 5-141
  2492.  
  2493. SER
  2494. PURPOSE
  2495. Returns the total number of records that have been created in a file.
  2496.  
  2497. SYNTAX
  2498. SER (filename)
  2499.  
  2500. COMMENTS
  2501.  
  2502. You can use the SER function to assign a serial number to each record in a
  2503. file. To do this, you need to define a field which will hold the serial
  2504. number. It should be defined as a constant field and should have SER
  2505. ("filename") as its constant formula. When you create the first record, it
  2506. will be given the value 1. This value will then be incremented by one for
  2507. each record you add to the file. The difference between SER and RECCOUNT is
  2508. that SER gives the total number of records that have been created,
  2509. irrespective of whether they have been deleted later. RECCOUNT returns the
  2510. number of records currently in the file.
  2511.  
  2512. 1    ? SER ("Stock")
  2513. 2    BLANK
  2514.     Recno.Stock=SER ("STOCK")
  2515.     Price.Stock=14.95
  2516.     Description.Stock="Widget"
  2517.     STORE
  2518.  
  2519. SET
  2520. PURPOSE
  2521. Reads a text file and executes any commands in the file, or assigns
  2522. variables from a text file.
  2523.  
  2524. SYNTAX
  2525. SET filename
  2526.  
  2527. COMMENTS
  2528.  
  2529. This command reads in a text file and executes it as if it were a sequence
  2530. of
  2531.  
  2532.                 5-142
  2533.  
  2534. command. The file, therefore, must contain valid DML commands. If the file
  2535. holds a set of variables-which have previously been saved to disk by ?
  2536. MEMORY-the variable assignments are executed. This provides a way of
  2537. transferring variables between different programs when CHAIN is not
  2538. appropriate. For example, Program 'a' can set up variables for Program 'c',
  2539. but Program 'a' CHAINs to Program 'b'. Another application would be to
  2540. communicate variables between different programs which are run on different
  2541. days.
  2542.  
  2543. EXAMPLES
  2544.  
  2545. 1    ......
  2546.     process a
  2547.     ......
  2548.     OPEN "aaa" FOR OUTPUT:? MEMORY:CLOSE OUTPUT:DISPLAY
  2549.     another program
  2550.     SET "aaa"
  2551.     ......
  2552.     process b
  2553. 2    SET "abc"
  2554. 'abc' could be ASCII file which contains a set of function key assignments.
  2555.  
  2556.                 5-143
  2557.  
  2558. SET BUFFERS
  2559. PURPOSE
  2560. Sets the number of buffers Superbase uses as a disk cache.
  2561.  
  2562. SYNTAX
  2563. SET BUFFERS nexp
  2564.  
  2565. COMMENTS
  2566.  
  2567. Operates in the same way as the Buffers option in Set Menu Options, and
  2568. allocates 512 bytes memory space for each buffer. nexp can have a value
  2569. from 1 to 99.
  2570.  
  2571. EXAMPLES
  2572.  
  2573. 1    SET BUFFERS 24
  2574.  
  2575. SET PAGING
  2576. PURPOSE
  2577. Sets paging on or off.
  2578.  
  2579. SYNTAX
  2580. SET PAGING[ON/OFF]
  2581.  
  2582. COMMENTS
  2583.  
  2584. When used without ON/OFF, it acts as toggle and operates in the same way as
  2585. the SET-PAGING menu options. With ON or OFF, it sets paging accordingly.
  2586.  
  2587. EXAMPLES
  2588.  
  2589. 1    SET PAGING OFF
  2590.  
  2591.                 5-144
  2592.  
  2593. SET VIEW MODE
  2594. PURPOSE
  2595. Sets the view mode or switches between one of the view modes and a Form.
  2596.  
  2597. SYNTAX
  2598. SET [TABLE]/[FORM]/[RECORD]
  2599.  
  2600. COMMENTS
  2601.  
  2602. Works in the same way as the equivalent Set Menu option, except that it
  2603. does not automatically display a record (use VIEW). If a Form (as opposed
  2604. to Form view) is displayed, the SET command switches the Form off and
  2605. selects the specified view mode. The Form remains in memory and can be
  2606. switched on again by repeating the SET command for the same view mode. In
  2607. other words, when a Form has been opened, the SET command toggles the
  2608. current view mode on and off.
  2609.  
  2610. EXAMPLES
  2611.  
  2612. 1    SET FORM
  2613. 2    SET TABLE:VIEW
  2614.  
  2615. SGN
  2616. PURPOSE
  2617. Finds the sign of a number.
  2618.  
  2619. SYNTAX
  2620. SGN (nexpr)
  2621.  
  2622. COMMENTS
  2623.  
  2624. This function returns the positive value of 1 if nexpr is positive and
  2625. returns the negative value -1 if nexpr is negative.
  2626.  
  2627.                 5-145
  2628.  
  2629. EXAMPLES
  2630.  
  2631. 1    numfieldc=SGN (numfielda)
  2632. 2    IF SGN (datefielda-datefieldb) THEN GOTO lab1
  2633. 3    x%=SGN (y%)
  2634. 4    x%=SGN (y% * numfielda * (datefielda-datefieldb))
  2635. 5    x%=SGN (VAL (RIGHT$ (textfielda, 5)))
  2636. 6    ? SGN (x%)
  2637.  
  2638. NOTES
  2639. Example 2 tests whether datefieldb is later than datefielda
  2640.  
  2641. SHOW
  2642. PURPOSE
  2643. Shows an external file.
  2644.  
  2645. SYNTAX
  2646. SHOW [field]/[strexpr]
  2647.  
  2648. COMMENTS
  2649.  
  2650. SHOW is the program equivalent of the camera button at the bottom of the
  2651. screen. It displays a picture or text from an external file.field must be a
  2652. field which holds the name of the external file, but it does not have to be
  2653. a field in the current file:if you add a file name extension to the field
  2654. name,  you can display pictures using other open database files. As an
  2655. alternative to specifying an external field, strexpr allows you to specify
  2656. the name of an external file. When field or strexpr is not given, SHOW
  2657. removes the picture from the screen.
  2658.  
  2659.                 5-146
  2660.  
  2661. SIN
  2662. PURPOSE
  2663. Returns the sine of an angle measured in radians.
  2664.  
  2665. SYNTAX
  2666. SIN (nexpr)
  2667.  
  2668. COMMENTS
  2669.  
  2670. This function returns the sine of the angle in nexpr, where the angle is
  2671. measured in radians. To convert degrees to radians, multiply by 180/PI.
  2672.  
  2673. EXAMPLES
  2674.  
  2675. 1    numfieldc=SIN (numfielda)
  2676. 2    x%=SIN (y%)
  2677. 3    x%=SIN (VAL (x$))
  2678. 4    ? SIN (x%)
  2679.  
  2680. SPACE$
  2681. PURPOSE
  2682. Fills a string with a specified number of spaces.
  2683.  
  2684. SYNTAX
  2685. SPACE$ (nexpr)
  2686.  
  2687. COMMENTS
  2688.  
  2689. nexpr must be in the range 0 to 255.
  2690.  
  2691. EXAMPLES
  2692.  
  2693. 1    textfieldc=SPACE$ (10)
  2694. 2    x$=SPACE$ (4)
  2695.  
  2696.                 5-147
  2697.  
  2698. SQR
  2699. PURPOSE
  2700. Returns the square root of a number
  2701.  
  2702. SYNTAX
  2703. SQR (nexpr)
  2704.  
  2705. COMMENTS
  2706.  
  2707. The function returns the square root of the number specified by nexpr. If
  2708. nexpr is less than zero, the function returns the error message 'invalid
  2709. number'.
  2710.  
  2711. EXAMPLES
  2712.  
  2713. 1    numfieldc=SQR (numfielda)
  2714. 2    numfieldc=SQR (2 * numfielda)
  2715. 3    textfieldc=STR$ (SQR (VAL (x$)))
  2716. 4    x%=SQR (y%)
  2717.  
  2718. STORE
  2719. PURPOSE
  2720. Stores the current record in the current file or in the file specified.
  2721.  
  2722. SYNTAX
  2723. STORE[, 0/1/2] [FILE sbfname]
  2724.  
  2725. COMMENTS
  2726.  
  2727. This command stores the record in memory for the current file, or for the
  2728. file specified with sbfname. It is equivalent to the Save option on the
  2729. Record menu.
  2730.  
  2731.                 5-148
  2732.  
  2733. The numeric parameters - 0, 1 or 2 - allow you to specify whether the
  2734. record is stored in batch mode or in the normal way (see the section on
  2735. Batch in Chapter 5, Volume 1). STORE, 1 stores the current record in batch
  2736. mode. The time taken to save the record on disk will be reduced, but the
  2737. data will not yet be secure:if you suffer a power loss, you will lose any
  2738. record data which has been saved (in the current session) using this
  2739. option. Note that STORE, 1 only turns on batch mode for the current
  2740. record.STORE, 2 does not store a record but makes the file secure. Any
  2741. records that have been saved previously with the STORE, 1 command will now
  2742. be made safe on disk. You should always execute a STORE, 2 command after
  2743. storing records in batch mode. STORE, 0 is optional and is the same as
  2744. STORE on its own:Superbase makes each record secure as it is stored. If you
  2745. were to turn the computer off accidentally, the most you would lose would
  2746. be the data in memory.
  2747.  
  2748. EXAMPLES
  2749.  
  2750. 1    BLANK
  2751.     Firstname="John"
  2752.     Lastname="Roberts"
  2753.     Street="15 Richmond Way"
  2754.     ......
  2755.     ......
  2756.     ......
  2757.     STORE
  2758. 2    FOR n%=1 to 10
  2759.     BLANK
  2760.     Firstname=Recdata$ (n%, 1)
  2761.     Lastname=Recadata$ (n%, 2)
  2762.     Street=Recdata$ (n%, 3)
  2763.     ......
  2764.     ......
  2765.     ......
  2766.     STORE, 1
  2767.     NEXT
  2768.     STORE, 2
  2769.  
  2770.                 5-149
  2771.  
  2772. NOTES
  2773.  
  2774. The first example creates a new record and stores it in the normal way.
  2775. Example 2 creates ten new records, reading data into the fields for each
  2776. record from the array Recdata$ and storing them in batch mode. When all the
  2777. records have been stored, it makes the file secure with the STORE, 2
  2778. command.
  2779.  
  2780. STR$
  2781. PURPOSE
  2782. Returns the text equivalent of a numeric expression.
  2783.  
  2784. SYNTAX
  2785. STR$ (nexpr [[, nexpri [, nexprd]]/[, numeric-format-string]])
  2786.  
  2787. COMMENTS
  2788.  
  2789. STR$ converts data which is held in a numeric variable or numeric field
  2790. into a text string. nexpri specifies the number of integers before the
  2791. decimal point and should be set large enough to avoid overflow display.
  2792. nexprd specifies the number of integers after the decimal point. The
  2793. maximum numeric format in Superbase is a total of 13 integers, so nexpri
  2794. plus nexprd must be less than 14. As an alternative to using nexpri and
  2795. nexprd, you can specify the numeric format as a string (see NUMBASE). If
  2796. these parameters are not used, the default numeric format set by Numeric
  2797. Format on the Set menu or by the most recent use of NUMBASE will be taken.
  2798. The complementary function to STR$ is VAL.
  2799.  
  2800. EXAMPLES
  2801.  
  2802. 1    textfieldc=STR$ (numfielda)
  2803. 2    textfieldc-STR$ (numfielda, 5, 0)
  2804. 3    x$=STR$ (165.4444, "z999999.00")
  2805.  
  2806.                 5-150
  2807.  
  2808. TAN
  2809. PURPOSE
  2810. Returns the tangent of an angle measured in radians.
  2811.  
  2812. SYNTAX
  2813. TAN (nexpr)
  2814.  
  2815. COMMENTS
  2816.  
  2817. The function returns the tangent of the angle in nexpr measured in radians.
  2818. The complementary function of TAN is ATN.
  2819.  
  2820. EXAMPLES
  2821.  
  2822. 1    numfieldc=TAN (numfielda)
  2823. 2    x%=TAN (y%)
  2824. 3    x%=TAN (VAL (x$))
  2825. 4    ? TAN (x%)
  2826.  
  2827. THOUSECS
  2828. PURPOSE
  2829. Takes a numeric value and returns the number of thousandths of a second
  2830. left over after subtracting the number of seconds.
  2831.  
  2832. SYNTAX
  2833. THOUSECS (nexpr)
  2834.  
  2835. COMMENTS
  2836.  
  2837. nexpr will usually contain a time in milliseconds from a time field or the
  2838. result of a TIMEVAL calculation. THOUSECS returns the same result as nexpr
  2839. MOD 1000.
  2840.  
  2841. 1    x%=THOUSECS (timefield)
  2842.  
  2843.                 5-151
  2844.  
  2845. TIME$
  2846. PURPOSE
  2847.  
  2848. Returns the time in string format from a numeric value which gives the time
  2849. in thousandths of a second.
  2850.  
  2851. SYNTAX
  2852. TIME$ (nexpr [, timeformat])
  2853.  
  2854. COMMENTS
  2855.  
  2856. The second argument for this function, timeformat, allows you to specify
  2857. the format the time string will have. It must conform to the rules for
  2858. Superbase time formats given in the keyword entry for DATEBASE.
  2859.  
  2860. EXAMPLES
  2861.  
  2862. 1    x$=TIME$ (timefield)
  2863. 2    ? TIME$ (NOW, "hh:mm:ssam")
  2864.  
  2865. TIMEVAL
  2866. PURPOSE
  2867. Returns the value of a time string in thousandths of a second.
  2868.  
  2869. SYNTAX
  2870. TIMEVAL (strexpr)
  2871.  
  2872. COMMENTS
  2873.  
  2874. strexpr must contain the time in a valid time format. See the keyword entry
  2875. for DATEBASE for a list of acceptable time formats.
  2876.  
  2877. EXAMPLES
  2878.  
  2879. 1    t%=TIMEVAL ("10:22am")
  2880. 2    t%=TIMEVAL ("14:03:12.201")
  2881.  
  2882.                 5-152
  2883.  
  2884. TODAY
  2885. PURPOSE
  2886. Gives the system date.
  2887.  
  2888. SYNTAX
  2889. TODAY
  2890.  
  2891. COMMENTS
  2892.  
  2893. TODAY shows the date in the date format as set with Date Format option in
  2894. the Set menu, or as set by the DATEBASE command. If your computer has a
  2895. real-time clock or you have set the system date, TODAY gives the current
  2896. date. Otherwise,  it gives the default system date. TODAY holds the date as
  2897. a julian date number. Superbase automatically translates this into the
  2898. current date format when you display the date using ? TODAY.
  2899.  
  2900. EXAMPLES
  2901.  
  2902. 1    ? TODAY
  2903. 2    datefield=TODAY
  2904. 3    ? MONTH (TODAY)
  2905.  
  2906.                 5-153
  2907.  
  2908. TRIM$
  2909. PURPOSE
  2910. Trims trailing spaces from a string or a text field.
  2911.  
  2912. SYNTAX
  2913. TRIM$ (strexpr)
  2914.  
  2915. COMMENTS
  2916.  
  2917. This returns the string consisting of the original string specified by
  2918. strexpr with any trailing spaces eliminated.
  2919.  
  2920. EXAMPLES
  2921.  
  2922. 1    stringfieldc=TRIM$ (textfielda)
  2923. 2    x$=TRIM$ (textfieldc.filea)
  2924. 3    ? LEN (x$); LEN (TRIM$ (x$)
  2925.  
  2926. UCASE$
  2927. PURPOSE
  2928. Returns the upper case equivalent of a text string or a text field.
  2929.  
  2930. SYNTAX
  2931. UCASE$ (strexpr)
  2932.  
  2933. COMMENTS
  2934.  
  2935. UCASE$ returns the upper case equivalent of the lowercase alphabet; no other
  2936. characters, including those already in upper case, are affected. The
  2937. complementary function of UCASE$ is UCASE$.
  2938.  
  2939. EXAMPLES
  2940.  
  2941. 1    textfieldc=UCASE$ (textfielda)
  2942. 2    x$=UCASE$ (y$)
  2943.  
  2944.                 5-154
  2945.  
  2946. 3    x$=UCASE$ ("ABCDEF")
  2947.  
  2948. NOTES
  2949.  
  2950. If you wish to set the first letter of a string to upper case, leaving the
  2951. rest in lower case, you can so using the FCASE$ function.
  2952.  
  2953. UPDATE
  2954. PURPOSE
  2955. Performs a relational update.
  2956.  
  2957. SYNTAX
  2958. UPDATE[calclist] [WHERE conditions] [END UPDATE]
  2959.  
  2960. COMMENTS
  2961.  
  2962. UPDATE on its own runs the update in memory. This may have been loaded from
  2963. disk with the LOAD UPDATE command, or it may have been created in the same
  2964. session using the Process menu option Update Edit. By specifying calclist
  2965. and conditions, you can also use UPDATE to define an update and then run
  2966. it. calclist corresponds to command line set in the Update Fields
  2967. dialog; conditions corresponds to the filter which is set in the Update
  2968. Filter dialog. The first specifies how the records are updated, the second
  2969. specifies which records are to be updated. WHERE conditions and calclist
  2970. should be entered as separate statements, either on the same line as UPDATE
  2971. separated by colons, or on separate lines. They form part of an Update
  2972. program section, headed by the UPDATE command and ending with END UPDATE.
  2973. The END UPDATE command must be included if the Update section is followed
  2974. by other statements in a program. Otherwise Superbase will regard these as
  2975. belonging to the Update section. As an alternative to using this command,
  2976. you can terminate the section with a colon or a blank line. UPDATE is a
  2977. multi-file command, so both conditions and calclist can refer to more than
  2978. one file. In this case, the first condition in the update filter must
  2979. establish a join between two files.
  2980.  
  2981.                 5-155
  2982.  
  2983. EXAMPLES
  2984.  
  2985. 1    LOAD UPDATE "Newrate":UPDATE
  2986. Loads the Update file Newrate from disk, and then runs it.
  2987. 2    UPDATE
  2988.     Price.Orders=Price.Stock
  2989.     WHERE Product_Code.Orders=Product_Code.Stock AND
  2990.     Order_date "15 July 1987"
  2991.     END UPDATE
  2992. Updates prices in the Orders file on the basis of the price details in the
  2993. Stock file.
  2994.  
  2995. VAL
  2996. PURPOSE
  2997. Returns the numeric value of a text string.
  2998.  
  2999. SYNTAX
  3000. VAL (strexpr)
  3001.  
  3002. COMMENTS
  3003.  
  3004. The function returns the numeric value of the number (if any) in the
  3005. lefthand end of the string or substring specified in strexpr. In cases
  3006. where strexpr does not contain a number or where the leftmost character of
  3007. strexpr is not numeric,  the function returns 0. The complementary function
  3008. of VAL is STR$
  3009.  
  3010. EXAMPLES
  3011.  
  3012. 1    numfieldc=VAL (textfielda)
  3013. 2    numfieldc=VAL (RIGHT$ (textfielda, 8))
  3014. 3    VAL (textfielda) > 1 AND VAL (RIGHT$ (textfielda, 4) > 0
  3015. 4    x%=VAL ("12.45A456")
  3016. 5    x%=VAL (x$)
  3017.  
  3018.                 5-156
  3019.  
  3020. VIEW
  3021. PURPOSE
  3022. Displays the current record in the current file.
  3023.  
  3024. SYNTAX
  3025. VIEW
  3026.  
  3027. COMMENTS
  3028.  
  3029. Allows the user to see the current record in the current file in the view
  3030. format specified by the SET view mode command. It can also be used to
  3031. redisplay the current Form.
  3032.  
  3033. WAIT
  3034. PURPOSE
  3035. Waits for a specified time or until a key is pressed.
  3036.  
  3037. SYNTAX
  3038. WAIT [FOR time]/[FOR nexp] [var/field]
  3039.  
  3040. COMMENTS
  3041.  
  3042. Wait waits for a given number of seconds (FOR nexp) or until a given time
  3043. (FOR time). FOR nexp implies 'wait for nexp seconds'. FOR time implies
  3044. 'wait until the system clock reached time', where the time is given in the
  3045. current time format. FOR var/field implies 'wait until a key is pressed,
  3046. and then place it in var or field'. If you follow WAIT with a numeric
  3047. variable or numeric field, it will only accept a number. In other word,
  3048. pressing any key except the keys with the digits 0 to 9, will have no
  3049. effect.
  3050.  
  3051.                 5-157
  3052.  
  3053. EXAMPLES
  3054.  
  3055. 1    WAIT FOR 3
  3056. Waits for 3 seconds.
  3057. 2    WAIT FOR 10:20:30
  3058. Wait until 10:20 am.
  3059. 3    WAIT x$
  3060. Waits for a single key stroke and puts it in x$.
  3061.  
  3062. WHERE
  3063. PURPOSE
  3064. Set the filter conditions for a query or a report.
  3065.  
  3066. SYNTAX
  3067. WHERE conditions
  3068.  
  3069. COMMENTS
  3070.  
  3071. WHERE is the program equivalent of the Filter command line in a query
  3072. definition, and can only be used within a section that is headed by the
  3073. query SELECT command. You can use WHERE to set a filter on the fields
  3074. selected for report output or for other query applications, such as
  3075. sorting, merging files, or simply retrieving data with query that has been
  3076. saved to disk. conditions takes the same form as the Filter command line in
  3077. the query definition dialog (see Chapter 11, Volume 1). WHERE is a
  3078. multi-file filter command - unlike the record selection command SELECT
  3079. WHERE - and if it used for this purpose, the join between two files must be
  3080. placed at the beginning of the statement, as in:
  3081.  
  3082.     WHERE Lastname.Clients=Lastname.Deposits
  3083.  
  3084. Any subsidiary conditions can then be added to the line using the AND
  3085. operator.
  3086.  
  3087. EXAMPLES
  3088.  
  3089. 1    SELECT Firstname.Clients, Lastname.Clients, Bank, Amount
  3090.     WHERE Lastname.Clients=Lastname.Deposits AND
  3091.  
  3092.                 5-158
  3093.  
  3094.     Lastname.Clients LIKE "[d-3]*"
  3095.     ORDER Lastname.Clients
  3096.     END SELECT
  3097. 2    WHERE Price > = 50 AND Price < = 100
  3098. 3    WHERE Lastname LIKE ["a-c"*] AND NOT (Country=USA)
  3099.  
  3100. NOTES
  3101.  
  3102. In the first example, WHERE is used to set up a multi-file filter. It
  3103. selects only those clients whose details are also stored in the Deposits
  3104. file and whose last name initial falls in the range A to C. Note that file
  3105. extension must be given for Lastname since the field occurs in both the
  3106. Clients file and the Deposits file; the Bank and Amount fields do not
  3107. require an extension name since they only occur in the Deposits file. The
  3108. other two examples show WHERE in use as a single file filter command.
  3109.  
  3110.                 5-159
  3111.  
  3112. WHILE WEND
  3113. PURPOSE
  3114. Executes a series of instructions as long as the specified conditions are
  3115. true.
  3116.  
  3117. SYNTAX
  3118. WHILE exp statements WEND
  3119.  
  3120. COMMENTS
  3121.  
  3122. WHILE and WEND set up a loop, in which the statement in between are
  3123. executed repeatedly for as long as the expression following WHILE is true.
  3124. When the expression is not true, execution resumes with the first statement
  3125. after WEND.
  3126.  
  3127. EXAMPLES
  3128.  
  3129. 1    OPEN FILE "Address"
  3130.     SELECT FIRST
  3131.     WHILE NOT EOF ("Address")
  3132.     VIEW
  3133.     SELECT NEXT
  3134.     WEND
  3135. 2    WHILE NOT EOF (*"): INPUT &1, a$:? a$:WEND
  3136.  
  3137. YEAR
  3138. PURPOSE
  3139. Returns a numeric value for the year from a julian date number.
  3140.  
  3141. SYNTAX
  3142. YEAR (nexp)
  3143.  
  3144. COMMENTS
  3145.  
  3146. The function is only valid for dates from 1 January 1 to the end of
  3147. December 9999. Consequently nexpr is only valid in the range 1 to 3652048.
  3148. If nexpr is 0 then the number returned is 0. If nexpr is negative the
  3149. results are unpredictable. Associated date functions are DATE$ DAY DAYS
  3150. DAY$ MONTH
  3151.  
  3152.                 5-160
  3153.  
  3154. EXAMPLES
  3155.  
  3156. 1    numfieldc=YEAR (datefielda)
  3157. 2    numfieldc=YEAR (datefielda + 90)
  3158. 3    numfieldc=YEAR (TODAY)
  3159. 4    x%=YEAR (datefielda + VAL (textfielda))
  3160. 5    x%=YEAR (DAYS ("11 Jan 85")
  3161. 6    ? YEAR (datefielda + 30)
  3162. 7    YEAR (datefielda)=1986
  3163.  
  3164. NOTES
  3165.  
  3166. Example 3 provides a calculation to insert the month number of the system
  3167. date into a numeric field. Example 7 provides a filter to pick out all the
  3168. dates in datefielda which fall in the year 1986.
  3169.  
  3170.                 5-161
  3171.  
  3172.             CHAPTER 6 - QUICK REFERENCE GUIDE
  3173.  
  3174. APPLICATION FUNCTIONS
  3175.  
  3176. RUN [filename]
  3177. Execute program, optionally loading from disk
  3178.  
  3179. CHAIN filename
  3180. Execute program without clearing variables
  3181.  
  3182. NEW [TEXT/QUERY/UPDATE]
  3183. Clear program or text area
  3184.  
  3185. EDIT [TEXT/KEY/QUERY/UPDATE]
  3186. Allow user to edit program, text, query or update
  3187.  
  3188. LOAD [TEXT/KEY/QUERY/UPDATE] filename [, APPEND]
  3189. Load program, text, file, function key list, query or update
  3190.  
  3191. SAVE [TEXT/KEY/QUERY/UPDATE] filename [, TEXT]
  3192. Save program, text file, function key list, query or update
  3193.  
  3194. PROTECT [filename]
  3195. Save the current program in encrypted form
  3196.  
  3197. CALL function
  3198. Call a user supplied function
  3199.  
  3200. SYSTEM COMMANDS
  3201.  
  3202. DEBUG [ON/OFF]
  3203. Set or clear debug flag
  3204.  
  3205. BREAK [ON/OFF]
  3206. Set or clear user stop enabled
  3207.  
  3208. QUIT
  3209. Exit Superbase system
  3210.  
  3211. KEY keynum [, string]
  3212. Set keynum to string or clear it
  3213.  
  3214.                 6-1
  3215.  
  3216. LIST filename
  3217. List any system file to screen
  3218.  
  3219. DELETE filename
  3220. Delete any system file
  3221.  
  3222. RENAME old filename [, TO] new filename
  3223.  
  3224. COPY from filename [, TO] to filename
  3225. Copy any system file
  3226.  
  3227. NUMBASE string
  3228. Set default numeric format
  3229.  
  3230. DATEBASE string
  3231. Set default date format
  3232.  
  3233. DIRECTORY path
  3234. Change directory to path
  3235.  
  3236. SET TABLE/RECORD/FORM
  3237. Set view according to parameter 
  3238.  
  3239. SET PAGING [ON/OFF]
  3240. Set paging
  3241.  
  3242. SET BUFFERS nexp
  3243. Set number of cache buffers to use
  3244.  
  3245. BASIC STATEMENTS
  3246.  
  3247. [LET] var/field=exp
  3248. Assign value of expression to variable or field
  3249.  
  3250. ERASE varlist
  3251. Remove a variable from memory
  3252.  
  3253. CLEAR
  3254. Clear all system variables
  3255.  
  3256. READ var/field [, var/field]
  3257. Read data into variables or fields from data pointer
  3258.  
  3259.                 6-2
  3260.  
  3261. DATA constant [, constant]...
  3262. Specify data for READ statement
  3263.  
  3264. RESTORE [label]
  3265. Move data pointer to specified position or home
  3266.  
  3267. REM text
  3268. Non executable comment line
  3269.  
  3270. EXECUTE string
  3271. Execute text string as though command
  3272.  
  3273. DIM array variable
  3274. Set array dimensions
  3275.  
  3276. CONTROL FLOW
  3277.  
  3278. FOR var=nexp TO nexp [STEP nexp]statements NEXT [var]
  3279. Repeat program lines a number of times
  3280.  
  3281. GOSUB label
  3282. Call a procedure or subroutine
  3283.  
  3284. GOTO label
  3285. Call a procedure or subroutine
  3286.  
  3287. GOTO label
  3288. Branch to the specified label
  3289.  
  3290. ON ERROR [GOTO label]
  3291. Specify procedure to be followed on error condition
  3292.  
  3293. ON nexp GOTO label [, label]...
  3294. Branch to statement or label in list
  3295.  
  3296. ON nexp GOSUB label [, label]...
  3297. Call procedure or subroutine in list
  3298.  
  3299. RETURN
  3300. Return from procedure or subroutine execution
  3301.  
  3302. RESUME [NEXT / label]
  3303. Resume execution after error at next or specified position
  3304.  
  3305. END
  3306. Terminate execution of application
  3307.  
  3308.                 6-3
  3309.  
  3310. WHILE expr
  3311. Perform following commands if expression true
  3312.  
  3313. WEND
  3314. Mark end of while command sequence
  3315.  
  3316. CONDITIONALS
  3317.  
  3318. IF exp THEN statement/label [ELSE statement/label]
  3319. Conditional statement or expression execution
  3320.  
  3321. varfield=exp ? expr:expr
  3322. Conditional assignment of value to field or variable
  3323.  
  3324. FILE AND INDEX COMMANDS
  3325.  
  3326. CREATE sbfname; passwords
  3327. Create a new database file in memory
  3328.  
  3329. CREATE INDEX ON exp [FILE sbfname] [TO index] [UNIQUE]
  3330. Create a new index file optionally make unique
  3331.  
  3332. ADD [FILE sbfname] field definition string [, formula string]
  3333. Add a new field to a file
  3334.  
  3335. MAKE sbfname
  3336. Make the file exist on disk and store the file def
  3337.  
  3338. MODIFY field [, ] field definition string [, formula string]
  3339. Modify parameters for field changing name, type etc.
  3340.  
  3341. SAVE FILE sbfname
  3342. Save the current file definition
  3343.  
  3344. PASSWORD sbfname; passwords
  3345. Set new passwords for a specified file
  3346.  
  3347. REORGANIZE [FILE sbfname] [TO] pathname
  3348. Reorganize current or specified file to new pathname
  3349.  
  3350. OPEN FILE sbfname; passwords
  3351. Open file set as default
  3352.  
  3353.                 6-4
  3354.  
  3355. CLOSE [ALL]/[FILE sbfname]
  3356. Close all or specified files
  3357.  
  3358. FILE sbfname
  3359. Select the default file to be used
  3360.  
  3361. INDEX index
  3362. Select the default index to be used for a file
  3363.  
  3364. REMOVE FILE sbfname
  3365. Remove all data, file and all indices
  3366.  
  3367. REMOVE INDEX index
  3368. Remove the specified index for specified file
  3369.  
  3370. OPEN FIELDS [FILE sbfname] fieldlist
  3371. Open a set of fields for specified file
  3372.  
  3373. CLOSE FIELDS [FILE sbfname]
  3374. Close the open fields for specified file
  3375.  
  3376. RECORD COMMANDS
  3377.  
  3378. BLANK [FILE sbfname]
  3379. Clear all data from current record
  3380.  
  3381. STORE [0/1/2, ] [FILE sbfname]
  3382. Store current record in the file, batch mode optional.
  3383.  
  3384. ENTER [field/nexpr] [, nexpr2]
  3385. Allow the user to enter a record in the current file
  3386.  
  3387. VIEW
  3388. View record in the current file
  3389.  
  3390. SELECT
  3391. Record selection commands
  3392.  
  3393. SELECT FIRST [FILE sbfname] [INDEX index]
  3394. Select the first record in key sequence
  3395.  
  3396. SELECT LAST [FILE sbfname] [INDEX index]
  3397. Select the last record in key sequence
  3398.  
  3399.                 6-5
  3400.  
  3401. SELECT NEXT [FILE sbfname] [INDEX index]
  3402. Select the next record in key sequence
  3403.  
  3404. SELECT PREVIOUS [FILE sbfname] [INDEX index]
  3405. Select the previous record in key sequence
  3406.  
  3407. SELECT CURRENT [FILE sbfname] [INDEX index]
  3408. Select the current record in key sequence
  3409.  
  3410. SELECT DUPLICATE [FILE sbfname] [INDEX index]
  3411. Select the next record with the same key
  3412.  
  3413. SELECT REMOVE [FILE sbfname]
  3414. Remove the current record in selected file
  3415.  
  3416. SELECT KEY string [FILE sbfname] [INDEX index]
  3417. Select the first record with index matching string
  3418.  
  3419. SELECT WHERE [FILE sbfname] [conditions]
  3420. Select the first record matching conditions or clear conditions
  3421.  
  3422. SELECT field parms [WHERE parms] [REPORT parms] [ORDER parms]
  3423. [SAY]/[TO PRINTER/filename/FILE sbfname] [END SELECT]
  3424. Query language command
  3425.  
  3426. PROCESS COMMANDS
  3427.  
  3428. UPDATE calc list [WHERE conditions] [END UPDATE]
  3429. Perform relational update
  3430.  
  3431. REMOVE FROM FILE sbfname WHERE conditions
  3432. Remove records matching conditions
  3433.  
  3434. IMPORT filename [[TO] FILE sbfname] [WHERE conditions] [USING
  3435. parms]
  3436. Import external text file to superbase
  3437.  
  3438. EXPORT [FILE sbfname] [INDEX index] [TO] filename [WHERE
  3439. conditions [USING parms]
  3440. Export to external file
  3441.  
  3442. LABELS [FILE sbfname] [WHERE conditions] [USING labelstring]
  3443. Print labels as per label definition
  3444.  
  3445.                 6-6
  3446.  
  3447. MERGE [TEXT filename [WHERE conditions]
  3448. Load text file and mail merge
  3449.  
  3450. INPUT OUTPUT FUNCTIONS
  3451.  
  3452. SHOW field/strexpr
  3453. Show external field
  3454.  
  3455. OPEN filename FOR INPUT/OUTPUT/APPEND/COMM
  3456. Open sequential file for input/output
  3457.  
  3458. POSITION nexp
  3459. Position in sequential file
  3460.  
  3461. INPUT [&nexp/LINE] var/field
  3462. Input characters or line from text file
  3463.  
  3464. CLOSE INPUT/OUTPUT/COMM
  3465. End input/output to/from text file or comms
  3466.  
  3467. SET filename
  3468. Read exec or variable file and execute
  3469.  
  3470. GET var/field
  3471. Get character from keyboard no wait
  3472.  
  3473. WAIT FOR time/FOR nexp/var/field
  3474. Wait till time, for no of secs or for single key entry
  3475.  
  3476. ASK [string] [pos] [length] ;var/field
  3477. Get input string from user
  3478.  
  3479. BELL
  3480. Ring bell
  3481.  
  3482. HOME
  3483. Move screen output position to home
  3484.  
  3485. CLS
  3486. Clear output screen
  3487.  
  3488. EJECT [nexp]
  3489. Do new pages on print device
  3490.  
  3491.                 6-7
  3492.  
  3493. SCRDUMP
  3494. Do screen dump to printer
  3495.  
  3496. LOCATE coordinates
  3497. Set position on output device
  3498.  
  3499. NEWLINE [nexp]
  3500. Send newline to output device
  3501.  
  3502. MENU column, item, state [, text]
  3503. Set up a user defined menu
  3504.  
  3505. MENU CLEAR
  3506. Clear user-defined menu
  3507.  
  3508. MENU ON numvar
  3509. Turn on user-defined menus, specify variable for return value
  3510.  
  3511. REQUEST text[, ] text[, ] type [, numvar [, textvar [, len]]]
  3512. Set up a user-defined dialog (requester)
  3513.  
  3514. MEMORY
  3515. List of variables in memory
  3516.  
  3517. STATUS [FILE sbfname]
  3518. Status of selected file or system
  3519.  
  3520. SAY [[USING pitch, mode, rate, sex, phonemes] string [, /; string...]]
  3521. Amiga only. Output string as speech
  3522.  
  3523. FG nexp
  3524. Set foreground colour
  3525.  
  3526. BG nexp
  3527. Set background colour
  3528.  
  3529. UL [ON/OFF]
  3530. Set or clear underline
  3531.  
  3532. IT [ON/OFF]
  3533. Set or clear italics
  3534.  
  3535. BF [ON/OFF]
  3536. Set or clear bold face
  3537.  
  3538.                 6-8
  3539.  
  3540. ATTR OFF
  3541. Clear bold face italics and underline
  3542.  
  3543. ? /DISPLAY/PRINT/OUTPUT TO file
  3544. Send information to selected output device
  3545.  
  3546. ? SAY
  3547. Use narrator device to speak output
  3548.  
  3549. ? MEMORY
  3550. List of variables in memory
  3551.  
  3552. ? LIST
  3553. Program listing in memory
  3554.  
  3555. ? STATUS [FILE sbfname]
  3556. Status of selected file or system
  3557.  
  3558. ? DIRECTORY
  3559. Current directory listing
  3560.  
  3561. ? TEXT [MERGE]
  3562. Text file in memory optionally mail merging
  3563.  
  3564. ? QUERY
  3565. Current query statement
  3566.  
  3567. ? exprlist
  3568. Any expression list
  3569.  
  3570. REPORTING
  3571.  
  3572. HEADING statements END HEADING
  3573. Specify statements to execute on page heading
  3574.  
  3575. FOOTING statements END FOOTING
  3576. Specify statements to execute on page footing
  3577.  
  3578. REPORT total list
  3579. Set report totals, means and count
  3580.  
  3581. BEFORE REPORT
  3582. Specify before report activity
  3583.  
  3584.                 6-9
  3585.  
  3586. AFTER REPORT
  3587. Specify after report activity
  3588.  
  3589. END REPORT
  3590. End of report specifications
  3591.  
  3592. GROUP field total list
  3593. Specify subtotal break field and subtotals, means and counts for group
  3594.  
  3595. BEFORE GROUP statements
  3596. Specify before group activity
  3597.  
  3598. AFTER GROUP statements
  3599. Specify after group activity
  3600.  
  3601. END GROUP
  3602. End of group specifications
  3603.  
  3604. FORM HANDLING
  3605.  
  3606. CLOSE FORM
  3607. Close current form
  3608.  
  3609. OPEN FORM formname
  3610. Load a form into memory
  3611.  
  3612. FORM [, page [, row [, column]]]]
  3613. Specify page for current and top left-hand corner
  3614.  
  3615. ENTER [FORM view name] [field list
  3616. Enter data into fields through view form
  3617.  
  3618. OPERATORS
  3619.  
  3620. ARITHMETIC OPERATORS
  3621.  
  3622. ^
  3623. Exponentiation
  3624.  
  3625. -
  3626. Negation
  3627.  
  3628.                 6-10
  3629.  
  3630. *
  3631. Multiplication
  3632.  
  3633. /
  3634. Division
  3635.  
  3636. MOD
  3637. Modulo arithmetic
  3638.  
  3639. +
  3640. Addition
  3641.  
  3642. -
  3643. Subtraction
  3644.  
  3645. RELATIONAL OPERATORS
  3646.  
  3647. =
  3648. Equality
  3649.  
  3650. LIKE
  3651. Pattern matching case insensitive equality
  3652.  
  3653. <>
  3654. Inequality
  3655.  
  3656. <
  3657. Less than
  3658.  
  3659. >
  3660. Greater than
  3661.  
  3662. <=
  3663. Less than or equal to
  3664.  
  3665. >=
  3666. Greater than or equal to
  3667.  
  3668.                 6-11
  3669.  
  3670. LOGICAL OPERATORS
  3671.  
  3672. NOT
  3673.  
  3674. AND
  3675.  
  3676. OR
  3677.  
  3678. MATHEMATICAL FUNCTIONS
  3679.  
  3680. SGN (x)
  3681. Sign of variable
  3682.  
  3683. INT (x)
  3684. Integer portion of variable
  3685.  
  3686. ABS (x)
  3687. Absolute value of variable
  3688.  
  3689. SQR (x)
  3690. Square root
  3691.  
  3692. RND (x)
  3693. Random number
  3694.  
  3695. LOG (x)
  3696. Logarithm
  3697.  
  3698. EXP (x)
  3699. Exponent
  3700.  
  3701. COS (x)
  3702. Cosine
  3703.  
  3704. SIN (x)
  3705. Sine
  3706.  
  3707. TAN (x)
  3708. Tangent
  3709.  
  3710. ATN (x)
  3711. Arctangent
  3712.  
  3713. FIX (x, y)
  3714. Fix decimal precision of value
  3715.  
  3716.                 6-12
  3717.  
  3718. FREE (n)
  3719. Return free memory size
  3720.  
  3721. DISKSPACE ("disk")
  3722. Return free disk space
  3723.  
  3724. RECCOUNT (sbfname)
  3725. Return number of records in file
  3726.  
  3727. SER (sbfname)
  3728. Return serial number of specified file
  3729.  
  3730. ROW (0)
  3731. Return current screen row
  3732.  
  3733. COL (0)
  3734. Return current screen column
  3735.  
  3736. PROW (n)
  3737. Return current printer row
  3738.  
  3739. PCOL (n)
  3740. Return current printer column
  3741.  
  3742. EOF (sbfname)
  3743. Return if at end of file
  3744.  
  3745. FOUND (sbfname)
  3746. Return result of last search
  3747.  
  3748. LOOKUP (value, fld)
  3749. Return if value exists in file (indexed field)
  3750.  
  3751. STRING FUNCTIONS
  3752.  
  3753. LEN (x$)
  3754. Length of string
  3755.  
  3756. STR$ (x[[, y] [, z] / [, numformat]])
  3757. String from number with optional format
  3758.  
  3759. VAL (x$)
  3760. Value of string
  3761.  
  3762.                 6-13
  3763.  
  3764. ASC (x$)
  3765. Ascii value of character
  3766.  
  3767. CHR$ (x$)
  3768. String value of character
  3769.  
  3770. LEFT$ (x$, nexp)
  3771. Left portion of string
  3772.  
  3773. RIGHT$ (x$, nexp)
  3774. Right portion of string
  3775.  
  3776. MID$ (x$, nexp [, nexp])
  3777. Mid portion of string
  3778.  
  3779. DAYS (x$)
  3780. Numeric value of date
  3781.  
  3782. DATE$ (nexp [, dform])
  3783. Date string from numeric using optional format
  3784.  
  3785. DAY (date)
  3786. Numeric day value of date
  3787.  
  3788. DAY$ (date)
  3789. Day of week from date
  3790.  
  3791. MONTH (date)
  3792. Numeric month value of date
  3793.  
  3794. MONTH$ (date)
  3795. Month string from date
  3796.  
  3797. YEAR (date)
  3798. Numeric year value of date
  3799.  
  3800. TIMEVAL (time)
  3801. Numeric value of time
  3802.  
  3803. TIME$ (nexp [, tformat])
  3804. Time string from numeric using optional time format
  3805.  
  3806. HRS (time)
  3807. Number of hours from time
  3808.  
  3809.                 6-14
  3810.  
  3811. MINS (time)
  3812. Number of minutes from time
  3813.  
  3814. SECS (time)
  3815. Number of seconds from time
  3816.  
  3817. THOUSECS (time)
  3818. Number of thousandths of second from time
  3819.  
  3820. LCASE$ (x$)
  3821. Convert string to lower case
  3822.  
  3823. UCASE$ (x$)
  3824. Convert string to upper case
  3825.  
  3826. FCASE$ (x$)
  3827. Capitalize first letter of string
  3828.  
  3829. TRIM$ (x$)
  3830. Trim trailing spaces from x$
  3831.  
  3832. LTRIM$ (x$)
  3833. Trim leading spaces from x$
  3834.  
  3835. INSTR ([n, ]x$, y$)
  3836. Find position of substring y$ in x$
  3837.  
  3838. REPLICATE (x$, nexp)
  3839. Replicate character expression n times
  3840.  
  3841. SPACES$ (n)
  3842. Return string with n spaces
  3843.  
  3844. ERR$ (n)
  3845. Returns error message for error number n
  3846.  
  3847. VARIABLES
  3848.  
  3849. TODAY
  3850. Return system date
  3851.  
  3852. NOW
  3853. Return system time
  3854.  
  3855.                 6-15
  3856.  
  3857. ERRNO
  3858. Return current error number
  3859.  
  3860. PI
  3861. Return value of pi
  3862.  
  3863. FIELDS BY NAME
  3864. Fieldname; Field.file; Field. "file"
  3865.  
  3866. MULTIPLE RESPONSE FIELDS
  3867. Fieldname (nexp)
  3868.  
  3869. STRING VARIABLES
  3870. X$
  3871.  
  3872. NUMERIC VARIABLES
  3873. X%
  3874.  
  3875. ARRAYS
  3876. X% or X$ (nexp[[, nexp] [, nexp]])
  3877.  
  3878.                 6-16
  3879.  
  3880.                    INDEX
  3881.  
  3882. & 5-4                        C
  3883. ? 5-8                        Changing the output device
  3884.                         5-3
  3885. ? Commands 5-3                    Command line 3-6
  3886. ? DIRECTORY 5-9                       Editing 3-7
  3887. ? LIST 5-9                    Constants 2-13
  3888. ? MEMORY 5-10                    CONTAINS 2-11
  3889. ? QUERY 5-10
  3890. ? STATUS 5-11                    D
  3891. ? STATUS FILE 5-11                DATA 5-33, 5-116
  3892. ? TEXT 5-12                    Date 2-6
  3893. @ 5-4                        Date format 2-6
  3894.                         DATE$ 5-34
  3895. A                        DATEBASE 5-35
  3896. ABS 5-13                    DAY 5-36
  3897. ADD 5-14                    DAY$ 5-37
  3898. AFTER GROUP 5-17                DAYS 5-38
  3899. AFTER REPORT 5-18                DELETE 5-39
  3900. APPEND 5-83, 5-103                DESCENDING 5-106
  3901. Arithmetic operators 2-7            DIRECTORY 5-40
  3902. Arrays 2-4                      See ? DIRECTORY
  3903. ASC 5-18                    DISKSPACE 5-41
  3904. ASCENDING 5-106                    DOWN 5-4
  3905. ASK 5-19
  3906. ATN 5-20                    E
  3907. ATTR 5-4                    EDIT 5-42
  3908.                         Editing keys
  3909. B                          Command line 3-7
  3910. Batch mode 5-148                  Program 3-5
  3911. BEFORE GROUP 5-21                EJECT 5-43
  3912. BELL 5-22                    END 5-44
  3913. BF 5-4                        END GROUP 5-44
  3914. BG 5-4                        END HEADING 5-45
  3915. BLANK 5-22                    END REPORT 5-45
  3916. BREAK ON/OFF 5-23                EOF 5-48
  3917.                         ERASE 5-49
  3918.  
  3919.   PAGING 5-144                    TO FILE 5-141
  3920.   RECORD 5-145                    TO PRT 5-141
  3921.   TABLE 5-145                    TODAY 5-153
  3922.   View mode 5-145                TRIM$ 5-154
  3923. SGN 5-145
  3924. SHOW 5-146                    U
  3925. SIN 5-147                    UCASE$ 5-154
  3926. Sorting data 5-106                UL 5-4
  3927. SPACE$ 5-147                    Update 5-155
  3928. SQR 5-148                      Load 5-83
  3929. Start up program 3-9                  Save 5-130
  3930. STATUS
  3931.   See ? STATUS                    V
  3932. STORE 5-148                    VAL 5-156
  3933. STR$ 5-150                    Variables 2-2
  3934. String variables 2-4                  Arrays 2-4
  3935. Syntax 2-15                      Names 2-2
  3936. System status 5-11                  Numeric 2-3
  3937. System variables 2-4                  String 2-4
  3938.                           System 2-4
  3939. T                        VIEW 5-157
  3940. TAN 5-151
  3941. Ternary operator 5-81                W
  3942. Text                        WAIT 5-157
  3943.   Load 5-83                    WEND 5-160
  3944.   Outputting files 5-12                WHERE 5-158
  3945.   Save 5-130                    WHILE 5-160
  3946. THOUSECS 5-151
  3947. Time 2-6                    Y
  3948. TIME$ 5-152                    YEAR 5-160
  3949. TIMEVAL 5-152
  3950.  
  3951. ============================================================================
  3952.      DOCS PROVIDED BY RAP AND -+*+-THE SOUTHERN STAR-+*+- for M.A.A.D.                                                               
  3953. ============================================================================
  3954.  
  3955.  
  3956.